protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e) { // set the font before calculating the size because bold text is being cut off in Linux. TabStripButton btn = e.Item as TabStripButton; if ((btn != null) && btn.Checked) { e.TextFont = btn.SelectedFont; } e.SizeTextRectangleToText(); // adjust the text position up for Linux var rect = e.TextRectangle; if (SIL.PlatformUtilities.Platform.IsLinux) { rect.Offset(0, -2); } else { rect.Offset(0, 8); // hatton for bloom lower is better } if (btn != null) { var delta = ((Mirrored) ? -1 : 1) * ((btn.Checked) ? 1 : selOffset); if (e.ToolStrip.Orientation == Orientation.Horizontal) { rect.Offset((Mirrored) ? 2 : 1, delta + ((Mirrored) ? 1 : -1)); } else { rect.Offset(delta + 2, 0); } if (btn.Selected) { e.TextColor = btn.HotTextColor; } else if (btn.Checked) { e.TextColor = btn.SelectedTextColor; } else { e.TextColor = Palette.LightTextAgainstDarkBackground; } } e.TextRectangle = rect; if (_currentRenderer != null) { _currentRenderer.DrawItemText(e); } else { base.OnRenderItemText(e); } }
protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e) { Rectangle rc = e.TextRectangle; TabStripButton btn = e.Item as TabStripButton; Color c = e.TextColor; Font f = e.TextFont; rc.Offset(0, 6); //hatton for bloom lower is better if (btn != null) { int delta = ((Mirrored) ? -1 : 1) * ((btn.Checked) ? 1 : selOffset); if (e.ToolStrip.Orientation == Orientation.Horizontal) { rc.Offset((Mirrored) ? 2 : 1, delta + ((Mirrored) ? 1 : -1)); } else { rc.Offset(delta + 2, 0); } if (btn.Selected) { c = btn.HotTextColor; } else if (btn.Checked) { c = btn.SelectedTextColor; } if (btn.Checked) { f = btn.SelectedFont; } } ToolStripItemTextRenderEventArgs x = new ToolStripItemTextRenderEventArgs(e.Graphics, e.Item, e.Text, rc, c, f, e.TextFormat); x.TextDirection = e.TextDirection; if (_currentRenderer != null) { _currentRenderer.DrawItemText(x); } else { base.OnRenderItemText(x); } }
protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e) { ActualRenderer.DrawItemText(e); }
protected override void OnPaint(PaintEventArgs e) { if (Owner == null) { return; } ToolStripRenderer renderer = ToolStripManager.Renderer; if (PlatformCompat.Runtime.UseToolStripRenderHack) { var oldHeight = Height; var oldParent = Parent; Parent = null; Height = Height / 2; e.Graphics.TranslateTransform(0, currentButton == 1 ? Height : 0); renderer.DrawButtonBackground(new ToolStripItemRenderEventArgs(e.Graphics, this)); e.Graphics.TranslateTransform(0, currentButton == 1 ? -Height : 0); Height = oldHeight; Parent = oldParent; } else { if (currentButton == 0) { e.Graphics.DrawRectangle(new Pen(Color.Black), 0, 0, Width - 1, Height / 2 - 1); } if (currentButton == 1) { e.Graphics.DrawRectangle(new Pen(Color.Black), 0, Height / 2, Width - 1, Height / 2 - 1); } } bool wrap = false; int textWidth = Math.Max(MeasureTextWidth(FirstText, ref wrap), MeasureTextWidth(SecondText, ref wrap)); var flags = TextFormatFlags.Left | TextFormatFlags.VerticalCenter; if (wrap) { flags |= TextFormatFlags.WordBreak; } if (FirstImage != null && FirstText != null) { if (Enabled) { e.Graphics.DrawImage(FirstImage, new Point(Padding.Left, Height / 4 - FirstImage.Height / 2)); } else { ControlPaint.DrawImageDisabled(e.Graphics, FirstImage, Padding.Left, Height / 4 - FirstImage.Height / 2, Color.Transparent); } var textRectangle = new Rectangle(Padding.Left + FirstImage.Width, 0, textWidth, Height / 2); renderer.DrawItemText(new ToolStripItemTextRenderEventArgs(e.Graphics, this, FirstText, textRectangle, ForeColor, Font, flags)); } if (SecondImage != null && SecondText != null) { if (Enabled) { e.Graphics.DrawImage(SecondImage, new Point(Padding.Left, Height * 3 / 4 - SecondImage.Height / 2)); } else { ControlPaint.DrawImageDisabled(e.Graphics, SecondImage, Padding.Left, Height * 3 / 4 - SecondImage.Height / 2, Color.Transparent); } var textRectangle = new Rectangle(Padding.Left + SecondImage.Width, Height / 2, textWidth, Height / 2); renderer.DrawItemText(new ToolStripItemTextRenderEventArgs(e.Graphics, this, SecondText, textRectangle, ForeColor, Font, flags)); } Image = null; }