* UIDropControl: DropDownList时,显示水印文字

This commit is contained in:
Sunny 2023-04-08 09:54:57 +08:00
parent dac28c7c62
commit 35399a341a
3 changed files with 28 additions and 24 deletions

View File

@ -1473,7 +1473,7 @@ namespace Sunny.UI
/// <param name="size">大小</param>
/// <param name="padding">边距</param>
/// <param name="align">位置位置</param>
public static void DrawString(this Graphics g, string str, Font font, Color color, Size size, Padding padding, ContentAlignment align)
public static void DrawString(this Graphics g, string str, Font font, Color color, Size size, Padding padding, ContentAlignment align, int offsetX = 0, int offsetY = 0)
{
if (str.IsNullOrEmpty()) return;
SizeF sf = g.MeasureString(str, font);
@ -1481,40 +1481,40 @@ namespace Sunny.UI
switch (align)
{
case ContentAlignment.MiddleCenter:
g.DrawString(str, font, br, padding.Left + (size.Width - sf.Width - padding.Left - padding.Right) / 2.0f,
padding.Top + (size.Height - sf.Height - padding.Top - padding.Bottom) / 2.0f);
g.DrawString(str, font, br, padding.Left + (size.Width - sf.Width - padding.Left - padding.Right) / 2.0f + offsetX,
padding.Top + (size.Height - sf.Height - padding.Top - padding.Bottom) / 2.0f + offsetY);
break;
case ContentAlignment.TopLeft:
g.DrawString(str, font, br, padding.Left, padding.Top);
g.DrawString(str, font, br, padding.Left + offsetX, padding.Top + offsetY);
break;
case ContentAlignment.TopCenter:
g.DrawString(str, font, br, padding.Left + (size.Width - sf.Width - padding.Left - padding.Right) / 2.0f, padding.Top);
g.DrawString(str, font, br, padding.Left + (size.Width - sf.Width - padding.Left - padding.Right) / 2.0f + offsetX, padding.Top + offsetY);
break;
case ContentAlignment.TopRight:
g.DrawString(str, font, br, size.Width - sf.Width - padding.Right, padding.Top);
g.DrawString(str, font, br, size.Width - sf.Width - padding.Right + offsetX, padding.Top + offsetY);
break;
case ContentAlignment.MiddleLeft:
g.DrawString(str, font, br, padding.Left, padding.Top + (size.Height - sf.Height - padding.Top - padding.Bottom) / 2.0f);
g.DrawString(str, font, br, padding.Left + offsetX, padding.Top + (size.Height - sf.Height - padding.Top - padding.Bottom) / 2.0f + offsetY);
break;
case ContentAlignment.MiddleRight:
g.DrawString(str, font, br, size.Width - sf.Width - padding.Right, padding.Top + (size.Height - sf.Height - padding.Top - padding.Bottom) / 2.0f);
g.DrawString(str, font, br, size.Width - sf.Width - padding.Right + offsetX, padding.Top + (size.Height - sf.Height - padding.Top - padding.Bottom) / 2.0f + offsetY);
break;
case ContentAlignment.BottomLeft:
g.DrawString(str, font, br, padding.Left, size.Height - sf.Height - padding.Bottom);
g.DrawString(str, font, br, padding.Left + offsetX, size.Height - sf.Height - padding.Bottom + offsetY);
break;
case ContentAlignment.BottomCenter:
g.DrawString(str, font, br, padding.Left + (size.Width - sf.Width - padding.Left - padding.Right) / 2.0f, size.Height - sf.Height - padding.Bottom);
g.DrawString(str, font, br, padding.Left + (size.Width - sf.Width - padding.Left - padding.Right) / 2.0f + offsetX, size.Height - sf.Height - padding.Bottom + offsetY);
break;
case ContentAlignment.BottomRight:
g.DrawString(str, font, br, size.Width - sf.Width - padding.Right, size.Height - sf.Height - padding.Bottom);
g.DrawString(str, font, br, size.Width - sf.Width - padding.Right + offsetX, size.Height - sf.Height - padding.Bottom + offsetY);
break;
}
}

View File

@ -21,6 +21,7 @@
* 2020-07-05: V2.2.6 KeyDownKeyUpKeyPress事件
* 2022-09-16: V3.2.4
* 2023-02-07: V3.3.1 Tips小红点
* 2023-04-08: V3.3.4 DropDownList时
******************************************************************************/
using System;
@ -31,18 +32,6 @@ using System.Windows.Forms;
namespace Sunny.UI
{
public enum UIDropDownStyle
{
/// <summary>
/// 通过单击下箭头指定显示列表,并指定文本部分可编辑。 这表示用户可以输入新的值,而不仅限于选择列表中现有的值。
/// </summary>
DropDown,
/// <summary>
/// 通过单击下箭头指定显示列表,并指定文本部分不可编辑。 这表示用户不能输入新的值。 只能选择列表中已有的值。
/// </summary>
DropDownList
}
[ToolboxItem(false)]
public partial class UIDropControl : UIPanel
{
@ -402,7 +391,10 @@ namespace Sunny.UI
if (!edit.Visible)
{
g.DrawString(Text, Font, GetForeColor(), Size, Padding, TextAlignment);
if (Text.IsValid())
g.DrawString(Text, Font, GetForeColor(), Size, Padding, TextAlignment);
else if (Watermark.IsValid())
g.DrawString(Watermark, Font, WatermarkColor, Size, Padding, TextAlignment, 6, 1);
}
g.FillRectangle(GetFillColor(), new Rectangle(Width - 27, Radius / 2, 26, Height - Radius));

View File

@ -221,4 +221,16 @@ namespace Sunny.UI
FilterCount = filterCount;
}
}
public enum UIDropDownStyle
{
/// <summary>
/// 通过单击下箭头指定显示列表,并指定文本部分可编辑。 这表示用户可以输入新的值,而不仅限于选择列表中现有的值。
/// </summary>
DropDown,
/// <summary>
/// 通过单击下箭头指定显示列表,并指定文本部分不可编辑。 这表示用户不能输入新的值。 只能选择列表中已有的值。
/// </summary>
DropDownList
}
}