public static void ScaleDpi(this TabHeaderControl tab, Func <Bitmap, Bitmap> transformIcon) { _scaler.Setup(tab); tab.ScaleDpiFont(); var iconsScaler = DpiScalers.Combine( new DpiScaler <TabHeaderControl, Bitmap>( c => c.CloseIcon, (c, bmp) => c.CloseIcon = bmp, transformIcon), new DpiScaler <TabHeaderControl, Bitmap>( c => c.CloseIconHovered, (c, bmp) => c.CloseIconHovered = bmp, transformIcon), new DpiScaler <TabHeaderControl, Bitmap>( c => c.AddIcon, (c, bmp) => c.AddIcon = bmp, transformIcon), new DpiScaler <TabHeaderControl, Bitmap>( c => c.DefaultIcon, (c, bmp) => c.DefaultIcon = bmp, transformIcon)); iconsScaler.Setup(tab); _textWidthScaler.Setup(tab); }
public void ApplyOrderFrom(TabHeaderControl other) { lock (_syncRoot) { var indices = TabIds.Select(id => other.TabIds.IndexOf(id)) .ToArray(); if (indices.Any(i => i < 0 || i >= Count)) { return; } Texts = Enumerable.Range(0, Count).Select(i => Texts[indices[i]]).ToList(); TabIds = Enumerable.Range(0, Count).Select(i => TabIds[indices[i]]).ToList(); Widths = Enumerable.Range(0, Count).Select(i => Widths[indices[i]]).ToList(); Icons = Enumerable.Range(0, Count).Select(i => Icons[indices[i]]).ToList(); } Invalidate(); TabReordered?.Invoke(this); }