* UIPage: 增加标题栏图片属性IconImage,优先于Symbol
This commit is contained in:
parent
ecc5d49b90
commit
45d2eed8b9
@ -44,6 +44,7 @@
|
||||
* 2023-12-04: V3.6.1 修复修改Style后,BackColor未保存的问题
|
||||
* 2023-12-20: V3.6.2 调整AfterShow事件位置及逻辑
|
||||
* 2024-04-28: V3.6.5 增加WindowStateChanged事件
|
||||
* 2024-10-30: V3.7.2 增加标题栏图片属性IconImage,优先于Symbol
|
||||
******************************************************************************/
|
||||
|
||||
using System;
|
||||
@ -89,6 +90,35 @@ namespace Sunny.UI
|
||||
base.SizeGripStyle = SizeGripStyle.Hide;
|
||||
}
|
||||
|
||||
private Image iconImage = null;
|
||||
|
||||
[Description("标题栏图标图片,状态栏显示仍然用Icon属性"), Category("SunnyUI")]
|
||||
[DefaultValue(null)]
|
||||
public Image IconImage
|
||||
{
|
||||
get => iconImage;
|
||||
set
|
||||
{
|
||||
iconImage = value;
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
private int iconImageSize = 24;
|
||||
|
||||
[Description("标题栏图标图片大小"), Category("SunnyUI")]
|
||||
[DefaultValue(24)]
|
||||
public int IconImageSize
|
||||
{
|
||||
get => iconImageSize;
|
||||
set
|
||||
{
|
||||
iconImageSize = Math.Max(16, value);
|
||||
iconImageSize = Math.Min(titleHeight - 2, iconImageSize);
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
public readonly Guid Guid = Guid.NewGuid();
|
||||
private Color _rectColor = UIColor.Blue;
|
||||
|
||||
@ -663,12 +693,20 @@ namespace Sunny.UI
|
||||
}
|
||||
|
||||
if (!AllowShowTitle) return;
|
||||
if (Symbol > 0)
|
||||
|
||||
int titleLeft = ImageInterval;
|
||||
if (IconImage != null)
|
||||
{
|
||||
e.Graphics.DrawImage(IconImage, new Rectangle(6, (TitleHeight - IconImageSize) / 2 + 1, IconImageSize, IconImageSize), new Rectangle(0, 0, IconImage.Width, IconImage.Height), GraphicsUnit.Pixel);
|
||||
titleLeft = ImageInterval + IconImageSize + 2;
|
||||
}
|
||||
else if (Symbol > 0)
|
||||
{
|
||||
e.Graphics.DrawFontImage(Symbol, SymbolSize, TitleForeColor, new Rectangle(ImageInterval, 0, SymbolSize, TitleHeight), SymbolOffset.X, SymbolOffset.Y, SymbolRotate);
|
||||
titleLeft = ImageInterval + SymbolSize + 2;
|
||||
}
|
||||
|
||||
e.Graphics.DrawString(Text, TitleFont, TitleForeColor, new Rectangle(Symbol > 0 ? ImageInterval * 2 + SymbolSize : ImageInterval, 0, Width, TitleHeight), ContentAlignment.MiddleLeft);
|
||||
e.Graphics.DrawString(Text, TitleFont, TitleForeColor, new Rectangle(titleLeft, 0, Width, TitleHeight), ContentAlignment.MiddleLeft);
|
||||
|
||||
e.Graphics.SetHighQuality();
|
||||
if (ControlBox)
|
||||
|
Loading…
x
Reference in New Issue
Block a user