* UINavBar: 修正下拉菜单文字显示垂直居中
* UINavBar: ImageList为空时,下拉菜单增加Symbol绘制 * UIContextMenuStrip: 修正文字显示垂直居中 * UIContextMenuStrip: 当右键菜单未绑定ImageList,并且ImageIndex>0时,将ImageIndex绑定为Symbol绘制
This commit is contained in:
parent
96b64900d8
commit
4e54367f28
@ -19,6 +19,8 @@
|
|||||||
* 2020-01-01: V2.2.0 增加文件说明
|
* 2020-01-01: V2.2.0 增加文件说明
|
||||||
* 2020-04-25: V2.2.4 更新主题配置类
|
* 2020-04-25: V2.2.4 更新主题配置类
|
||||||
* 2022-03-19: V3.1.1 重构主题配色
|
* 2022-03-19: V3.1.1 重构主题配色
|
||||||
|
* 2023-10-17: V3.5.1 修正文字显示垂直居中
|
||||||
|
* 2023-10-17: V3.5.1 当右键菜单未绑定ImageList,并且ImageIndex>0时,将ImageIndex绑定为Symbol绘制
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
@ -29,13 +31,13 @@ namespace Sunny.UI
|
|||||||
{
|
{
|
||||||
public sealed class UIContextMenuStrip : ContextMenuStrip, IStyleInterface, IZoomScale
|
public sealed class UIContextMenuStrip : ContextMenuStrip, IStyleInterface, IZoomScale
|
||||||
{
|
{
|
||||||
public ContextMenuColorTable ColorTable = new ContextMenuColorTable();
|
private ContextMenuColorTable ColorTable = new ContextMenuColorTable();
|
||||||
|
|
||||||
public UIContextMenuStrip()
|
public UIContextMenuStrip()
|
||||||
{
|
{
|
||||||
Font = UIStyles.Font();
|
Font = UIStyles.Font();
|
||||||
RenderMode = ToolStripRenderMode.Professional;
|
RenderMode = ToolStripRenderMode.Professional;
|
||||||
Renderer = new ToolStripProfessionalRenderer(ColorTable);
|
Renderer = new UIToolStripRenderer(ColorTable);
|
||||||
Version = UIGlobal.Version;
|
Version = UIGlobal.Version;
|
||||||
|
|
||||||
ColorTable.SetStyleColor(UIStyles.Blue);
|
ColorTable.SetStyleColor(UIStyles.Blue);
|
||||||
@ -139,7 +141,40 @@ namespace Sunny.UI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ContextMenuColorTable : ProfessionalColorTable
|
internal class UIToolStripRenderer : ToolStripProfessionalRenderer
|
||||||
|
{
|
||||||
|
public UIToolStripRenderer() { }
|
||||||
|
|
||||||
|
public UIToolStripRenderer(ProfessionalColorTable professionalColorTable) : base(professionalColorTable) { }
|
||||||
|
|
||||||
|
protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
|
||||||
|
{
|
||||||
|
//调整文本区域的位置和大小以实现垂直居中
|
||||||
|
Rectangle textRect = new Rectangle(e.TextRectangle.Left, e.Item.ContentRectangle.Top, e.TextRectangle.Width, e.Item.ContentRectangle.Height);
|
||||||
|
|
||||||
|
//设置文本绘制格式
|
||||||
|
TextFormatFlags flags = TextFormatFlags.VerticalCenter | TextFormatFlags.SingleLine;
|
||||||
|
|
||||||
|
//绘制文本
|
||||||
|
TextRenderer.DrawText(e.Graphics, e.Text, e.TextFont, textRect, e.TextColor, flags);
|
||||||
|
|
||||||
|
//当右键菜单未绑定ImageList,并且ImageIndex>0时,将ImageIndex绑定为Symbol绘制
|
||||||
|
ToolStripItem item = e.Item;
|
||||||
|
while (item.Owner is not ContextMenuStrip)
|
||||||
|
{
|
||||||
|
if (item.Owner is ToolStripDropDownMenu)
|
||||||
|
item = item.OwnerItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
ContextMenuStrip ownerContextMenu = item.Owner as ContextMenuStrip;
|
||||||
|
if (ownerContextMenu.ImageList != null) return;
|
||||||
|
if (e.Item.ImageIndex <= 0) return;
|
||||||
|
Rectangle imageRect = new Rectangle(0, e.Item.ContentRectangle.Top, e.TextRectangle.Left, e.Item.ContentRectangle.Height);
|
||||||
|
e.Graphics.DrawFontImage(e.Item.ImageIndex, 24, e.TextColor, imageRect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class ContextMenuColorTable : ProfessionalColorTable
|
||||||
{
|
{
|
||||||
private UIBaseStyle StyleColor = UIStyles.GetStyleColor(UIStyle.Blue);
|
private UIBaseStyle StyleColor = UIStyles.GetStyleColor(UIStyle.Blue);
|
||||||
|
|
||||||
|
@ -27,6 +27,8 @@
|
|||||||
* 2023-02-22: V3.3.2 去除下拉菜单宽度调整
|
* 2023-02-22: V3.3.2 去除下拉菜单宽度调整
|
||||||
* 2023-05-12: V3.3.6 重构DrawString函数
|
* 2023-05-12: V3.3.6 重构DrawString函数
|
||||||
* 2023-05-16: V3.3.6 重构DrawFontImage函数
|
* 2023-05-16: V3.3.6 重构DrawFontImage函数
|
||||||
|
* 2023-10-17: V3.5.1 修正下拉菜单文字显示垂直居中
|
||||||
|
* 2023-10-17: V3.5.1 ImageList为空时,下拉菜单增加Symbol绘制
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
@ -647,7 +649,16 @@ namespace Sunny.UI
|
|||||||
{
|
{
|
||||||
ToolStripMenuItem item = new ToolStripMenuItem(node.Text) { Tag = node };
|
ToolStripMenuItem item = new ToolStripMenuItem(node.Text) { Tag = node };
|
||||||
item.Click += Item_Click;
|
item.Click += Item_Click;
|
||||||
if (ImageList != null) item.ImageIndex = node.ImageIndex;
|
if (ImageList != null)
|
||||||
|
{
|
||||||
|
item.ImageIndex = node.ImageIndex;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int symbol = MenuHelper.GetSymbol(node);
|
||||||
|
if (symbol > 0) item.ImageIndex = symbol;
|
||||||
|
}
|
||||||
|
|
||||||
NavBarMenu.Items.Add(item);
|
NavBarMenu.Items.Add(item);
|
||||||
|
|
||||||
if (node.Nodes.Count > 0)
|
if (node.Nodes.Count > 0)
|
||||||
@ -663,10 +674,10 @@ namespace Sunny.UI
|
|||||||
// NavBarMenu.Width = NodeSize.Width;
|
// NavBarMenu.Width = NodeSize.Width;
|
||||||
//}
|
//}
|
||||||
|
|
||||||
foreach (ToolStripItem item in NavBarMenu.Items)
|
foreach (ToolStripMenuItem item in NavBarMenu.Items)
|
||||||
{
|
{
|
||||||
item.AutoSize = false;
|
item.AutoSize = false;
|
||||||
item.Width = NavBarMenu.Width - 1;
|
item.Width = NavBarMenu.Width + 3;
|
||||||
|
|
||||||
if (!DropDownItemAutoHeight)
|
if (!DropDownItemAutoHeight)
|
||||||
{
|
{
|
||||||
@ -710,7 +721,16 @@ namespace Sunny.UI
|
|||||||
foreach (TreeNode childNode in node.Nodes)
|
foreach (TreeNode childNode in node.Nodes)
|
||||||
{
|
{
|
||||||
ToolStripMenuItem childItem = new ToolStripMenuItem(childNode.Text) { Tag = childNode };
|
ToolStripMenuItem childItem = new ToolStripMenuItem(childNode.Text) { Tag = childNode };
|
||||||
if (ImageList != null) childItem.ImageIndex = childNode.ImageIndex;
|
if (ImageList != null)
|
||||||
|
{
|
||||||
|
childItem.ImageIndex = childNode.ImageIndex;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int symbol = MenuHelper.GetSymbol(childNode);
|
||||||
|
if (symbol > 0) childItem.ImageIndex = symbol;
|
||||||
|
}
|
||||||
|
|
||||||
childItem.Click += Item_Click;
|
childItem.Click += Item_Click;
|
||||||
item.DropDownItems.Add(childItem);
|
item.DropDownItems.Add(childItem);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user