From 5ca057ab6c0ff0cda0a0c3d34c4644a2260229c5 Mon Sep 17 00:00:00 2001 From: Sunny Date: Fri, 1 Dec 2023 22:30:01 +0800 Subject: [PATCH] =?UTF-8?q?+=20UIDigitalLabel:=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=86=B7=E6=B6=B2=E6=99=B6=E6=98=BE=E7=A4=BALCD=E6=A0=87?= =?UTF-8?q?=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SunnyUI/Controls/UIDigitalLabel.cs | 136 +++++++++++++++++++++++++++++ SunnyUI/Font/UDigitalFont.cs | 51 +++++++++++ SunnyUI/Font/sa-digital-number.ttf | Bin 0 -> 22204 bytes SunnyUI/SunnyUI.csproj | 2 + 4 files changed, 189 insertions(+) create mode 100644 SunnyUI/Controls/UIDigitalLabel.cs create mode 100644 SunnyUI/Font/UDigitalFont.cs create mode 100644 SunnyUI/Font/sa-digital-number.ttf diff --git a/SunnyUI/Controls/UIDigitalLabel.cs b/SunnyUI/Controls/UIDigitalLabel.cs new file mode 100644 index 00000000..fa0916f2 --- /dev/null +++ b/SunnyUI/Controls/UIDigitalLabel.cs @@ -0,0 +1,136 @@ +/****************************************************************************** + * SunnyUI 开源控件库、工具类库、扩展类库、多页面开发框架。 + * CopyRight (C) 2012-2023 ShenYongHua(沈永华). + * QQ群:56829229 QQ:17612584 EMail:SunnyUI@QQ.Com + * + * Blog: https://www.cnblogs.com/yhuse + * Gitee: https://gitee.com/yhuse/SunnyUI + * GitHub: https://github.com/yhuse/SunnyUI + * + * SunnyUI.dll can be used for free under the GPL-3.0 license. + * If you use this code, please keep this note. + * 如果您使用此代码,请保留此说明。 + ****************************************************************************** + * 文件名称: UIDigitalLabel.cs + * 文件说明: 冷液晶显示LCD标签 + * 当前版本: V3.6.1 + * 创建日期: 2023-12-01 + * + * 2023-12-01: V3.6.1 增加文件说明 +******************************************************************************/ + +/****************************************************************************** + * sa-digital-number.ttf + * Digital Numbers Fonts是一种固定宽度(web)字体,采用冷液晶显示(LCD)样式。 + * 依据SIL Open Font License 1.1授权协议免费公开。 + * https://github.com/s-a/digital-numbers-font + * Copyright (c) 2015, Stephan Ahlf (stephan.ahlf@googlemail.com) + * This Font Software is licensed under the SIL Open Font License, Version 1.1. +******************************************************************************/ + +using System; +using System.ComponentModel; +using System.Drawing; +using System.Windows.Forms; + +namespace Sunny.UI +{ + [DefaultEvent("ValueChanged")] + [DefaultProperty("Value")] + [ToolboxItem(true)] + public class UIDigitalLabel : UIControl + { + public UIDigitalLabel() + { + SetStyleFlags(); + Size = new Size(208, 42); + TextAlign = ContentAlignment.MiddleRight; + ShowText = ShowRect = ShowFill = false; + ForeColor = Color.Lime; + BackColor = Color.Black; + } + + private double digitalValue; + + [Description("浮点数"), Category("SunnyUI")] + [DefaultValue(typeof(double), "0")] + public double Value + { + get => digitalValue; + set + { + digitalValue = value; + ValueChanged?.Invoke(this, EventArgs.Empty); + Invalidate(); + } + } + + public event EventHandler ValueChanged; + + private int digitalSize = 24; + + [Description("LCD字体大小"), Category("SunnyUI")] + [DefaultValue(24)] + public int DigitalSize + { + get => digitalSize; + set + { + digitalSize = Math.Max(9, value); + Invalidate(); + } + } + + private int decimalPlaces = 2; + + [Description("浮点数,显示文字小数位数"), Category("SunnyUI")] + [DefaultValue(2)] + public int DecimalPlaces + { + get => decimalPlaces; + set + { + decimalPlaces = Math.Max(0, value); + Invalidate(); + } + } + + /// + /// 重载绘图 + /// + /// 绘图参数 + protected override void OnPaint(PaintEventArgs e) + { + //e.Graphics.Clear(FillColor); + + using (Font font = DigitalFont.Instance.GetFont(DigitalSize)) + { + string text = Value.ToString("F" + DecimalPlaces); + e.Graphics.DrawString(text, font, ForeColor, new Rectangle(0, 0, Width, Height), TextAlign, TextOffset.X, TextOffset.Y); + } + } + + private Point textOffset = new Point(0, 0); + + [Description("文字偏移"), Category("SunnyUI")] + [DefaultValue(typeof(Point), "0, 0")] + public Point TextOffset + { + get => textOffset; + set + { + textOffset = value; + Invalidate(); + } + } + + /// + /// 设置主题样式 + /// + /// 主题样式 + public override void SetStyleColor(UIBaseStyle uiColor) + { + + } + } +} diff --git a/SunnyUI/Font/UDigitalFont.cs b/SunnyUI/Font/UDigitalFont.cs new file mode 100644 index 00000000..904e6a54 --- /dev/null +++ b/SunnyUI/Font/UDigitalFont.cs @@ -0,0 +1,51 @@ +using System.Drawing; +using System.Drawing.Text; +using System.IO; +using System.Runtime.InteropServices; + +namespace Sunny.UI +{ + public class DigitalFont + { + private static DigitalFont _instance = null; + + public static DigitalFont Instance + { + get + { + if (_instance == null) _instance = new DigitalFont(); + return _instance; + } + } + + private readonly PrivateFontCollection ImageFont; + + public DigitalFont() + { + byte[] buffer = ReadFontFileFromResource("Sunny.UI.Font.sa-digital-number.ttf"); + ImageFont = new PrivateFontCollection(); + var memoryFont = Marshal.AllocCoTaskMem(buffer.Length); + Marshal.Copy(buffer, 0, memoryFont, buffer.Length); + ImageFont.AddMemoryFont(memoryFont, buffer.Length); + } + + public Font GetFont(float size) + { + return new Font(ImageFont.Families[0], size, FontStyle.Regular, GraphicsUnit.Point); + } + + private byte[] ReadFontFileFromResource(string name) + { + byte[] buffer = null; + Stream fontStream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(name); + if (fontStream != null) + { + buffer = new byte[fontStream.Length]; + fontStream.Read(buffer, 0, (int)fontStream.Length); + fontStream.Close(); + } + + return buffer; + } + } +} diff --git a/SunnyUI/Font/sa-digital-number.ttf b/SunnyUI/Font/sa-digital-number.ttf new file mode 100644 index 0000000000000000000000000000000000000000..25340c9b7f339aee311a944bf3e9a0f1c81cdff5 GIT binary patch literal 22204 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 literal 0 HcmV?d00001 diff --git a/SunnyUI/SunnyUI.csproj b/SunnyUI/SunnyUI.csproj index 94570d35..25a27ea5 100644 --- a/SunnyUI/SunnyUI.csproj +++ b/SunnyUI/SunnyUI.csproj @@ -41,6 +41,7 @@ + @@ -64,6 +65,7 @@ +