* ISymbol: 将字体图标最大尺寸从64调整到128
This commit is contained in:
parent
782c45c162
commit
609791b3d3
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,131 +1,4 @@
|
|||||||
# Rules in this file were initially inferred by Visual Studio IntelliCode from the C:\Users\Administrator\source\repos\SunnyUI\SunnyUI\ codebase based on best match to current usage at 2021/7/15
|
[*.cs]
|
||||||
# You can modify the rules from these initially generated values to suit your own policies
|
|
||||||
# You can learn more about editorconfig here: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference
|
|
||||||
[*.cs]
|
|
||||||
|
|
||||||
|
# Default severity for analyzer diagnostics with category 'Style'
|
||||||
#Core editorconfig formatting - indentation
|
dotnet_analyzer_diagnostic.category-Style.severity = none
|
||||||
|
|
||||||
#use soft tabs (spaces) for indentation
|
|
||||||
indent_style = space
|
|
||||||
|
|
||||||
#Formatting - indentation options
|
|
||||||
|
|
||||||
#indent switch case contents.
|
|
||||||
csharp_indent_case_contents = true
|
|
||||||
#indent switch labels
|
|
||||||
csharp_indent_switch_labels = true
|
|
||||||
|
|
||||||
#Formatting - new line options
|
|
||||||
|
|
||||||
#place catch statements on a new line
|
|
||||||
csharp_new_line_before_catch = true
|
|
||||||
#place else statements on a new line
|
|
||||||
csharp_new_line_before_else = true
|
|
||||||
#require members of object initializers to be on the same line
|
|
||||||
csharp_new_line_before_members_in_object_initializers = false
|
|
||||||
#require braces to be on a new line for accessors, object_collection_array_initializers, methods, types, control_blocks, and properties (also known as "Allman" style)
|
|
||||||
csharp_new_line_before_open_brace = accessors, object_collection_array_initializers, methods, types, control_blocks, properties
|
|
||||||
#require elements of query expression clauses to be on the same line
|
|
||||||
csharp_new_line_between_query_expression_clauses = false
|
|
||||||
|
|
||||||
#Formatting - organize using options
|
|
||||||
|
|
||||||
#sort System.* using directives alphabetically, and place them before other usings
|
|
||||||
dotnet_sort_system_directives_first = true
|
|
||||||
|
|
||||||
#Formatting - spacing options
|
|
||||||
|
|
||||||
#require NO space between a cast and the value
|
|
||||||
csharp_space_after_cast = false
|
|
||||||
#require a space before the colon for bases or interfaces in a type declaration
|
|
||||||
csharp_space_after_colon_in_inheritance_clause = true
|
|
||||||
#require a space after a keyword in a control flow statement such as a for loop
|
|
||||||
csharp_space_after_keywords_in_control_flow_statements = true
|
|
||||||
#require a space before the colon for bases or interfaces in a type declaration
|
|
||||||
csharp_space_before_colon_in_inheritance_clause = true
|
|
||||||
#remove space within empty argument list parentheses
|
|
||||||
csharp_space_between_method_call_empty_parameter_list_parentheses = false
|
|
||||||
#remove space between method call name and opening parenthesis
|
|
||||||
csharp_space_between_method_call_name_and_opening_parenthesis = false
|
|
||||||
#do not place space characters after the opening parenthesis and before the closing parenthesis of a method call
|
|
||||||
csharp_space_between_method_call_parameter_list_parentheses = false
|
|
||||||
#remove space within empty parameter list parentheses for a method declaration
|
|
||||||
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
|
|
||||||
#place a space character after the opening parenthesis and before the closing parenthesis of a method declaration parameter list.
|
|
||||||
csharp_space_between_method_declaration_parameter_list_parentheses = false
|
|
||||||
|
|
||||||
#Formatting - wrapping options
|
|
||||||
|
|
||||||
#leave code block on separate lines
|
|
||||||
csharp_preserve_single_line_blocks = false
|
|
||||||
#leave statements and member declarations on the same line
|
|
||||||
csharp_preserve_single_line_statements = true
|
|
||||||
|
|
||||||
#Style - Code block preferences
|
|
||||||
|
|
||||||
#prefer no curly braces if allowed
|
|
||||||
csharp_prefer_braces = false:suggestion
|
|
||||||
|
|
||||||
#Style - expression bodied member options
|
|
||||||
|
|
||||||
#prefer expression-bodied members for accessors
|
|
||||||
csharp_style_expression_bodied_accessors = true:suggestion
|
|
||||||
#prefer block bodies for constructors
|
|
||||||
csharp_style_expression_bodied_constructors = false:suggestion
|
|
||||||
#prefer block bodies for methods
|
|
||||||
csharp_style_expression_bodied_methods = false:suggestion
|
|
||||||
#prefer expression-bodied members for properties
|
|
||||||
csharp_style_expression_bodied_properties = true:suggestion
|
|
||||||
|
|
||||||
#Style - expression level options
|
|
||||||
|
|
||||||
#prefer out variables to be declared inline in the argument list of a method call when possible
|
|
||||||
csharp_style_inlined_variable_declaration = true:suggestion
|
|
||||||
#prefer the language keyword for member access expressions, instead of the type name, for types that have a keyword to represent them
|
|
||||||
dotnet_style_predefined_type_for_member_access = true:suggestion
|
|
||||||
|
|
||||||
#Style - Expression-level preferences
|
|
||||||
|
|
||||||
#prefer objects to not be initialized using object initializers
|
|
||||||
dotnet_style_object_initializer = false:suggestion
|
|
||||||
|
|
||||||
#Style - implicit and explicit types
|
|
||||||
|
|
||||||
#prefer explicit type over var in all cases, unless overridden by another code style rule
|
|
||||||
csharp_style_var_elsewhere = false:suggestion
|
|
||||||
#prefer explicit type over var to declare variables with built-in system types such as int
|
|
||||||
csharp_style_var_for_built_in_types = false:suggestion
|
|
||||||
#prefer explicit type over var when the type is already mentioned on the right-hand side of a declaration
|
|
||||||
csharp_style_var_when_type_is_apparent = false:suggestion
|
|
||||||
|
|
||||||
#Style - language keyword and framework type options
|
|
||||||
|
|
||||||
#prefer the language keyword for local variables, method parameters, and class members, instead of the type name, for types that have a keyword to represent them
|
|
||||||
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
|
|
||||||
|
|
||||||
#Style - modifier options
|
|
||||||
|
|
||||||
#prefer accessibility modifiers to be declared except for public interface members. This will currently not differ from always and will act as future proofing for if C# adds default interface methods.
|
|
||||||
dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion
|
|
||||||
|
|
||||||
#Style - Modifier preferences
|
|
||||||
|
|
||||||
#when this rule is set to a list of modifiers, prefer the specified ordering.
|
|
||||||
csharp_preferred_modifier_order = public,private,protected,internal,static,override,readonly,virtual,extern,new,sealed:suggestion
|
|
||||||
|
|
||||||
#Style - Pattern matching
|
|
||||||
|
|
||||||
#prefer pattern matching instead of is expression with type casts
|
|
||||||
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
|
|
||||||
|
|
||||||
#Style - qualification options
|
|
||||||
|
|
||||||
#prefer events not to be prefaced with this. or Me. in Visual Basic
|
|
||||||
dotnet_style_qualification_for_event = false:suggestion
|
|
||||||
#prefer fields not to be prefaced with this. or Me. in Visual Basic
|
|
||||||
dotnet_style_qualification_for_field = false:suggestion
|
|
||||||
#prefer methods not to be prefaced with this. or Me. in Visual Basic
|
|
||||||
dotnet_style_qualification_for_method = false:suggestion
|
|
||||||
#prefer properties not to be prefaced with this. or Me. in Visual Basic
|
|
||||||
dotnet_style_qualification_for_property = false:suggestion
|
|
||||||
|
@ -189,7 +189,7 @@ namespace Sunny.UI
|
|||||||
if (symbolSize != value)
|
if (symbolSize != value)
|
||||||
{
|
{
|
||||||
symbolSize = Math.Max(value, 16);
|
symbolSize = Math.Max(value, 16);
|
||||||
symbolSize = Math.Min(value, 64);
|
symbolSize = Math.Min(value, 128);
|
||||||
Invalidate();
|
Invalidate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ namespace Sunny.UI
|
|||||||
set
|
set
|
||||||
{
|
{
|
||||||
symbolSize = Math.Max(value, 16);
|
symbolSize = Math.Max(value, 16);
|
||||||
symbolSize = Math.Min(value, 64);
|
symbolSize = Math.Min(value, 128);
|
||||||
Invalidate();
|
Invalidate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -87,7 +87,7 @@ namespace Sunny.UI
|
|||||||
set
|
set
|
||||||
{
|
{
|
||||||
_imageSize = Math.Max(value, 16);
|
_imageSize = Math.Max(value, 16);
|
||||||
_imageSize = Math.Min(value, 64);
|
_imageSize = Math.Min(value, 128);
|
||||||
Invalidate();
|
Invalidate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -105,7 +105,7 @@ namespace Sunny.UI
|
|||||||
set
|
set
|
||||||
{
|
{
|
||||||
_symbolSize = Math.Max(value, 16);
|
_symbolSize = Math.Max(value, 16);
|
||||||
_symbolSize = Math.Min(value, 64);
|
_symbolSize = Math.Min(value, 128);
|
||||||
Invalidate();
|
Invalidate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -491,11 +491,13 @@ namespace Sunny.UI
|
|||||||
|
|
||||||
public void SetStyle(UIStyle style)
|
public void SetStyle(UIStyle style)
|
||||||
{
|
{
|
||||||
|
this.SuspendLayout();
|
||||||
UIStyleHelper.SetChildUIStyle(this, style);
|
UIStyleHelper.SetChildUIStyle(this, style);
|
||||||
|
|
||||||
UIBaseStyle uiColor = UIStyles.GetStyleColor(style);
|
UIBaseStyle uiColor = UIStyles.GetStyleColor(style);
|
||||||
if (!uiColor.IsCustom()) SetStyleColor(uiColor);
|
if (!uiColor.IsCustom()) SetStyleColor(uiColor);
|
||||||
_style = style;
|
_style = style;
|
||||||
|
this.ResumeLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void SetStyleColor(UIBaseStyle uiColor)
|
public virtual void SetStyleColor(UIBaseStyle uiColor)
|
||||||
|
@ -104,7 +104,7 @@ namespace Sunny.UI
|
|||||||
set
|
set
|
||||||
{
|
{
|
||||||
_imageSize = Math.Max(value, 16);
|
_imageSize = Math.Max(value, 16);
|
||||||
_imageSize = Math.Min(value, 64);
|
_imageSize = Math.Min(value, 128);
|
||||||
Invalidate();
|
Invalidate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -49,14 +49,17 @@ namespace Sunny.UI
|
|||||||
set
|
set
|
||||||
{
|
{
|
||||||
_symbolSize = Math.Max(value, 16);
|
_symbolSize = Math.Max(value, 16);
|
||||||
_symbolSize = Math.Min(value, 64);
|
_symbolSize = Math.Min(value, 128);
|
||||||
Invalidate();
|
Invalidate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[DefaultValue(null)]
|
[DefaultValue(null)]
|
||||||
[Description("图片"), Category("SunnyUI")]
|
[Description("图片"), Category("SunnyUI")]
|
||||||
public Image Image { get; set; }
|
public Image Image
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
private ContentAlignment imageAlign = ContentAlignment.MiddleCenter;
|
private ContentAlignment imageAlign = ContentAlignment.MiddleCenter;
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ namespace Sunny.UI
|
|||||||
set
|
set
|
||||||
{
|
{
|
||||||
_symbolSize = Math.Max(value, 16);
|
_symbolSize = Math.Max(value, 16);
|
||||||
_symbolSize = Math.Min(value, 64);
|
_symbolSize = Math.Min(value, 128);
|
||||||
Invalidate();
|
Invalidate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,13 +21,13 @@
|
|||||||
* 2020-08-12: V2.2.7 标题垂直居中
|
* 2020-08-12: V2.2.7 标题垂直居中
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
|
using Sunny.UI.Win32;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Drawing.Drawing2D;
|
using System.Drawing.Drawing2D;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using Sunny.UI.Win32;
|
|
||||||
|
|
||||||
namespace Sunny.UI
|
namespace Sunny.UI
|
||||||
{
|
{
|
||||||
@ -641,7 +641,7 @@ namespace Sunny.UI
|
|||||||
List<UIPage> pages;
|
List<UIPage> pages;
|
||||||
if (LastIndex != SelectedIndex)
|
if (LastIndex != SelectedIndex)
|
||||||
{
|
{
|
||||||
if (LastIndex >= 0 && TabPages.Count > 0)
|
if (LastIndex >= 0 && TabPages.Count > 0 && LastIndex < TabPages.Count)
|
||||||
{
|
{
|
||||||
pages = TabPages[LastIndex].GetControls<UIPage>();
|
pages = TabPages[LastIndex].GetControls<UIPage>();
|
||||||
foreach (var page in pages)
|
foreach (var page in pages)
|
||||||
|
@ -56,8 +56,10 @@ namespace Sunny.UI
|
|||||||
|
|
||||||
public void SetStyle(UIStyle style)
|
public void SetStyle(UIStyle style)
|
||||||
{
|
{
|
||||||
|
this.SuspendLayout();
|
||||||
UIStyleHelper.SetChildUIStyle(this, style);
|
UIStyleHelper.SetChildUIStyle(this, style);
|
||||||
_style = style;
|
_style = style;
|
||||||
|
this.ResumeLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetStyleColor(UIBaseStyle uiColor)
|
public void SetStyleColor(UIBaseStyle uiColor)
|
||||||
|
@ -102,10 +102,9 @@ namespace Sunny.UI
|
|||||||
/// <param name="symbol">字符</param>
|
/// <param name="symbol">字符</param>
|
||||||
/// <param name="symbolSize">大小</param>
|
/// <param name="symbolSize">大小</param>
|
||||||
/// <returns>字体大小</returns>
|
/// <returns>字体大小</returns>
|
||||||
public static SizeF GetFontImageSize(this Graphics graphics, int symbol, int symbolSize,
|
public static SizeF GetFontImageSize(this Graphics graphics, int symbol, int symbolSize)
|
||||||
UISymbolType symbolType = UISymbolType.FontAwesomeV4)
|
|
||||||
{
|
{
|
||||||
Font font = GetFont(symbol, symbolSize, symbolType);
|
Font font = GetFont(symbol, symbolSize);
|
||||||
if (font == null)
|
if (font == null)
|
||||||
{
|
{
|
||||||
return new SizeF(0, 0);
|
return new SizeF(0, 0);
|
||||||
@ -114,41 +113,14 @@ namespace Sunny.UI
|
|||||||
return graphics.MeasureString(char.ConvertFromUtf32(symbol), font);
|
return graphics.MeasureString(char.ConvertFromUtf32(symbol), font);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
private static UISymbolType GetSymbolType(int symbol)
|
||||||
/// 绘制字体图片
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="graphics">GDI绘图</param>
|
|
||||||
/// <param name="symbol">字符</param>
|
|
||||||
/// <param name="symbolSize">大小</param>
|
|
||||||
/// <param name="color">颜色</param>
|
|
||||||
/// <param name="left">左</param>
|
|
||||||
/// <param name="top">上</param>
|
|
||||||
/// <param name="xOffset">左右偏移</param>
|
|
||||||
/// <param name="yOffSet">上下偏移</param>
|
|
||||||
public static void DrawFontImage(this Graphics graphics, int symbol, int symbolSize, Color color,
|
|
||||||
float left, float top, int xOffset = 0, int yOffSet = 0)
|
|
||||||
{
|
{
|
||||||
UISymbolType symbolType = (UISymbolType)symbol.Div(100000);
|
return (UISymbolType)symbol.Div(100000);
|
||||||
graphics.DrawFontImage(symbol, symbolSize, color, left, top, xOffset, yOffSet, symbolType);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
private static int GetSymbolValue(int symbol)
|
||||||
/// 绘制字体图片
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="graphics">GDI绘图</param>
|
|
||||||
/// <param name="symbol">字符</param>
|
|
||||||
/// <param name="symbolSize">大小</param>
|
|
||||||
/// <param name="color">颜色</param>
|
|
||||||
/// <param name="rect">区域</param>
|
|
||||||
/// <param name="xOffset">左右偏移</param>
|
|
||||||
/// <param name="yOffSet">上下偏移</param>
|
|
||||||
public static void DrawFontImage(this Graphics graphics, int symbol, int symbolSize, Color color,
|
|
||||||
Rectangle rect, int xOffset = 0, int yOffSet = 0)
|
|
||||||
{
|
{
|
||||||
UISymbolType symbolType = (UISymbolType)symbol.Div(100000);
|
return symbol.Mod(100000);
|
||||||
SizeF sf = graphics.GetFontImageSize(symbol, symbolSize, symbolType);
|
|
||||||
graphics.DrawFontImage(symbol, symbolSize, color, rect.Left + ((rect.Width - sf.Width) / 2.0f).RoundEx(),
|
|
||||||
rect.Top + ((rect.Height - sf.Height) / 2.0f).RoundEx(), xOffset, yOffSet, symbolType);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -165,9 +137,9 @@ namespace Sunny.UI
|
|||||||
RectangleF rect, int xOffset = 0, int yOffSet = 0)
|
RectangleF rect, int xOffset = 0, int yOffSet = 0)
|
||||||
{
|
{
|
||||||
UISymbolType symbolType = (UISymbolType)symbol.Div(100000);
|
UISymbolType symbolType = (UISymbolType)symbol.Div(100000);
|
||||||
SizeF sf = graphics.GetFontImageSize(symbol, symbolSize, symbolType);
|
SizeF sf = graphics.GetFontImageSize(symbol, symbolSize);
|
||||||
graphics.DrawFontImage(symbol, symbolSize, color, rect.Left + ((rect.Width - sf.Width) / 2.0f).RoundEx(),
|
graphics.DrawFontImage(symbol, symbolSize, color, rect.Left + ((rect.Width - sf.Width) / 2.0f).RoundEx(),
|
||||||
rect.Top + ((rect.Height - sf.Height) / 2.0f).RoundEx(), xOffset, yOffSet, symbolType);
|
rect.Top + ((rect.Height - sf.Height) / 2.0f).RoundEx(), xOffset, yOffSet);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -181,18 +153,18 @@ namespace Sunny.UI
|
|||||||
/// <param name="top">上</param>
|
/// <param name="top">上</param>
|
||||||
/// <param name="xOffset">左右偏移</param>
|
/// <param name="xOffset">左右偏移</param>
|
||||||
/// <param name="yOffSet">上下偏移</param>
|
/// <param name="yOffSet">上下偏移</param>
|
||||||
private static void DrawFontImage(this Graphics graphics, int symbol, int symbolSize, Color color,
|
public static void DrawFontImage(this Graphics graphics, int symbol, int symbolSize, Color color,
|
||||||
float left, float top, int xOffset, int yOffSet, UISymbolType symbolType)
|
float left, float top, int xOffset = 0, int yOffSet = 0)
|
||||||
{
|
{
|
||||||
symbol = symbol.Mod(100000);
|
|
||||||
//字体
|
//字体
|
||||||
Font font = GetFont(symbol, symbolSize, symbolType);
|
Font font = GetFont(symbol, symbolSize);
|
||||||
if (font == null)
|
if (font == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
string text = char.ConvertFromUtf32(symbol);
|
var symbolValue = GetSymbolValue(symbol);
|
||||||
|
string text = char.ConvertFromUtf32(symbolValue);
|
||||||
graphics.TextRenderingHint = TextRenderingHint.AntiAlias;
|
graphics.TextRenderingHint = TextRenderingHint.AntiAlias;
|
||||||
graphics.InterpolationMode = InterpolationMode.HighQualityBilinear;
|
graphics.InterpolationMode = InterpolationMode.HighQualityBilinear;
|
||||||
graphics.DrawString(text, font, color, left + xOffset, top + yOffSet);
|
graphics.DrawString(text, font, color, left + xOffset, top + yOffSet);
|
||||||
@ -207,14 +179,14 @@ namespace Sunny.UI
|
|||||||
/// <param name="size">大小</param>
|
/// <param name="size">大小</param>
|
||||||
/// <param name="color">颜色</param>
|
/// <param name="color">颜色</param>
|
||||||
/// <returns>图片</returns>
|
/// <returns>图片</returns>
|
||||||
public static Image CreateImage(int symbol, int size, Color color, UISymbolType symbolType = UISymbolType.FontAwesomeV4)
|
public static Image CreateImage(int symbol, int size, Color color)
|
||||||
{
|
{
|
||||||
Bitmap image = new Bitmap(size, size);
|
Bitmap image = new Bitmap(size, size);
|
||||||
|
|
||||||
using (Graphics g = image.Graphics())
|
using (Graphics g = image.Graphics())
|
||||||
{
|
{
|
||||||
SizeF sf = g.GetFontImageSize(symbol, size, symbolType);
|
SizeF sf = g.GetFontImageSize(symbol, size);
|
||||||
g.DrawFontImage(symbol, size, color, (image.Width - sf.Width) / 2.0f, (image.Height - sf.Height) / 2.0f, 0, 0, symbolType);
|
g.DrawFontImage(symbol, size, color, (image.Width - sf.Width) / 2.0f, (image.Height - sf.Height) / 2.0f, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return image;
|
return image;
|
||||||
@ -226,26 +198,28 @@ namespace Sunny.UI
|
|||||||
/// <param name="symbol">字符</param>
|
/// <param name="symbol">字符</param>
|
||||||
/// <param name="imageSize">大小</param>
|
/// <param name="imageSize">大小</param>
|
||||||
/// <returns>字体</returns>
|
/// <returns>字体</returns>
|
||||||
public static Font GetFont(int symbol, int imageSize, UISymbolType symbolType = UISymbolType.FontAwesomeV4)
|
public static Font GetFont(int symbol, int imageSize)
|
||||||
{
|
{
|
||||||
|
var symbolType = GetSymbolType(symbol);
|
||||||
|
var symbolValue = GetSymbolValue(symbol);
|
||||||
switch (symbolType)
|
switch (symbolType)
|
||||||
{
|
{
|
||||||
case UISymbolType.FontAwesomeV4:
|
case UISymbolType.FontAwesomeV4:
|
||||||
if (symbol > 0xF000)
|
if (symbol > 0xF000)
|
||||||
return FontAwesomeV4.GetFont(symbol, imageSize);
|
return FontAwesomeV4.GetFont(symbolValue, imageSize);
|
||||||
else
|
else
|
||||||
return ElegantIcons.GetFont(symbol, imageSize);
|
return ElegantIcons.GetFont(symbolValue, imageSize);
|
||||||
case UISymbolType.FontAwesomeV5Brands:
|
case UISymbolType.FontAwesomeV5Brands:
|
||||||
return FontAwesomeV5Brands.GetFont(symbol, imageSize);
|
return FontAwesomeV5Brands.GetFont(symbolValue, imageSize);
|
||||||
case UISymbolType.FontAwesomeV5Regular:
|
case UISymbolType.FontAwesomeV5Regular:
|
||||||
return FontAwesomeV5Regular.GetFont(symbol, imageSize);
|
return FontAwesomeV5Regular.GetFont(symbolValue, imageSize);
|
||||||
case UISymbolType.FontAwesomeV5Solid:
|
case UISymbolType.FontAwesomeV5Solid:
|
||||||
return FontAwesomeV5Solid.GetFont(symbol, imageSize);
|
return FontAwesomeV5Solid.GetFont(symbolValue, imageSize);
|
||||||
default:
|
default:
|
||||||
if (symbol > 0xF000)
|
if (symbol > 0xF000)
|
||||||
return FontAwesomeV4.GetFont(symbol, imageSize);
|
return FontAwesomeV4.GetFont(symbolValue, imageSize);
|
||||||
else
|
else
|
||||||
return ElegantIcons.GetFont(symbol, imageSize);
|
return ElegantIcons.GetFont(symbolValue, imageSize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -258,19 +232,9 @@ namespace Sunny.UI
|
|||||||
private readonly PrivateFontCollection ImageFont;
|
private readonly PrivateFontCollection ImageFont;
|
||||||
private readonly Dictionary<int, Font> Fonts = new Dictionary<int, Font>();
|
private readonly Dictionary<int, Font> Fonts = new Dictionary<int, Font>();
|
||||||
private const int MinFontSize = 8;
|
private const int MinFontSize = 8;
|
||||||
private const int MaxFontSize = 43;
|
private const int MaxFontSize = 88;
|
||||||
private readonly IntPtr memoryFont = IntPtr.Zero;
|
private readonly IntPtr memoryFont = IntPtr.Zero;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 大小
|
|
||||||
/// </summary>
|
|
||||||
public int IconSize { get; set; } = 128;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 背景色
|
|
||||||
/// </summary>
|
|
||||||
public Color BackColor { get; set; } = Color.Transparent;
|
|
||||||
|
|
||||||
public FontImages(byte[] buffer)
|
public FontImages(byte[] buffer)
|
||||||
{
|
{
|
||||||
ImageFont = new PrivateFontCollection();
|
ImageFont = new PrivateFontCollection();
|
||||||
@ -299,7 +263,10 @@ namespace Sunny.UI
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 字体加载完成标志
|
/// 字体加载完成标志
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool Loaded { get; }
|
public bool Loaded
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
}
|
||||||
|
|
||||||
private void LoadDictionary()
|
private void LoadDictionary()
|
||||||
{
|
{
|
||||||
@ -349,31 +316,34 @@ namespace Sunny.UI
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取字体大小
|
/// 获取字体大小
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="iconText">图标</param>
|
/// <param name="symbol">ͼ±ê</param>
|
||||||
/// <param name="imageSize">图标大小</param>
|
/// <param name="imageSize">图标大小</param>
|
||||||
/// <returns>字体大小</returns>
|
/// <returns>字体大小</returns>
|
||||||
public int GetFontSize(int iconText, int imageSize)
|
public int GetFontSize(int symbol, int imageSize)
|
||||||
{
|
{
|
||||||
int size = MaxFontSize;
|
|
||||||
int interval = MaxFontSize - MinFontSize;
|
|
||||||
using (Bitmap bitmap = new Bitmap(48, 48))
|
using (Bitmap bitmap = new Bitmap(48, 48))
|
||||||
using (Graphics graphics = Graphics.FromImage(bitmap))
|
using (Graphics graphics = Graphics.FromImage(bitmap))
|
||||||
{
|
{
|
||||||
for (int i = 0; i <= interval; i++)
|
return BinarySearch(graphics, MinFontSize, MaxFontSize, symbol, imageSize);
|
||||||
{
|
}
|
||||||
Font font = Fonts[size];
|
}
|
||||||
SizeF sf = GetIconSize(iconText, graphics, font);
|
|
||||||
|
|
||||||
if (sf.Width < imageSize && sf.Height < imageSize)
|
public int BinarySearch(Graphics graphics, int low, int high, int symbol, int imageSize)
|
||||||
{
|
{
|
||||||
break;
|
int mid = (low + high) / 2;
|
||||||
}
|
Font font = Fonts[mid];
|
||||||
|
SizeF sf = GetIconSize(symbol, graphics, font);
|
||||||
size -= 1;
|
if (low >= high)
|
||||||
}
|
{
|
||||||
|
return mid;
|
||||||
}
|
}
|
||||||
|
|
||||||
return size;
|
if (sf.Width < imageSize && sf.Height < imageSize)
|
||||||
|
{
|
||||||
|
return BinarySearch(graphics, mid + 1, high, symbol, imageSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
return BinarySearch(graphics, low, mid - 1, symbol, imageSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Size GetIconSize(int iconText, Graphics graphics, Font font)
|
private Size GetIconSize(int iconText, Graphics graphics, Font font)
|
||||||
|
@ -239,7 +239,7 @@ namespace Sunny.UI
|
|||||||
AutoSize = false,
|
AutoSize = false,
|
||||||
Size = new Size(32, 32),
|
Size = new Size(32, 32),
|
||||||
ForeColor = UIColor.Blue,
|
ForeColor = UIColor.Blue,
|
||||||
Image = FontImageHelper.CreateImage(icon, 28, UIFontColor.Primary, symbolType),
|
Image = FontImageHelper.CreateImage(icon + (int)symbolType * 100000, 28, UIFontColor.Primary),
|
||||||
ImageAlign = ContentAlignment.MiddleCenter,
|
ImageAlign = ContentAlignment.MiddleCenter,
|
||||||
TextAlign = ContentAlignment.MiddleLeft,
|
TextAlign = ContentAlignment.MiddleLeft,
|
||||||
Margin = new Padding(2)
|
Margin = new Padding(2)
|
||||||
@ -256,14 +256,14 @@ namespace Sunny.UI
|
|||||||
{
|
{
|
||||||
Label lbl = (Label)sender;
|
Label lbl = (Label)sender;
|
||||||
SymbolValue symbol = (SymbolValue)lbl.Tag;
|
SymbolValue symbol = (SymbolValue)lbl.Tag;
|
||||||
lbl.Image = FontImageHelper.CreateImage(symbol.Symbol, 28, UIFontColor.Primary, symbol.SymbolType);
|
lbl.Image = FontImageHelper.CreateImage(symbol.Symbol + (int)symbol.SymbolType * 100000, 28, UIFontColor.Primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Lbl_MouseEnter(object sender, EventArgs e)
|
private void Lbl_MouseEnter(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Label lbl = (Label)sender;
|
Label lbl = (Label)sender;
|
||||||
SymbolValue symbol = (SymbolValue)lbl.Tag;
|
SymbolValue symbol = (SymbolValue)lbl.Tag;
|
||||||
lbl.Image = FontImageHelper.CreateImage(symbol.Symbol, 28, UIColor.Blue, symbol.SymbolType);
|
lbl.Image = FontImageHelper.CreateImage(symbol.Symbol + (int)symbol.SymbolType * 100000, 28, UIColor.Blue);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int Symbol { get; set; }
|
public int Symbol { get; set; }
|
||||||
|
@ -123,7 +123,7 @@ namespace Sunny.UI
|
|||||||
set
|
set
|
||||||
{
|
{
|
||||||
_symbolSize = Math.Max(value, 16);
|
_symbolSize = Math.Max(value, 16);
|
||||||
_symbolSize = Math.Min(value, 64);
|
_symbolSize = Math.Min(value, 128);
|
||||||
Invalidate();
|
Invalidate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1074,6 +1074,7 @@ namespace Sunny.UI
|
|||||||
|
|
||||||
public void SetStyle(UIStyle style)
|
public void SetStyle(UIStyle style)
|
||||||
{
|
{
|
||||||
|
this.SuspendLayout();
|
||||||
UIStyleHelper.SetChildUIStyle(this, style);
|
UIStyleHelper.SetChildUIStyle(this, style);
|
||||||
btn.SetStyle(style);
|
btn.SetStyle(style);
|
||||||
|
|
||||||
@ -1081,6 +1082,7 @@ namespace Sunny.UI
|
|||||||
if (!uiColor.IsCustom()) SetStyleColor(uiColor);
|
if (!uiColor.IsCustom()) SetStyleColor(uiColor);
|
||||||
_style = style;
|
_style = style;
|
||||||
UIStyleChanged?.Invoke(this, new EventArgs());
|
UIStyleChanged?.Invoke(this, new EventArgs());
|
||||||
|
this.ResumeLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
public event EventHandler UIStyleChanged;
|
public event EventHandler UIStyleChanged;
|
||||||
|
@ -77,7 +77,7 @@ namespace Sunny.UI
|
|||||||
set
|
set
|
||||||
{
|
{
|
||||||
_symbolSize = Math.Max(value, 16);
|
_symbolSize = Math.Max(value, 16);
|
||||||
_symbolSize = Math.Min(value, 64);
|
_symbolSize = Math.Min(value, 128);
|
||||||
SymbolChange();
|
SymbolChange();
|
||||||
Invalidate();
|
Invalidate();
|
||||||
}
|
}
|
||||||
@ -280,12 +280,14 @@ namespace Sunny.UI
|
|||||||
|
|
||||||
public void SetStyle(UIStyle style)
|
public void SetStyle(UIStyle style)
|
||||||
{
|
{
|
||||||
|
this.SuspendLayout();
|
||||||
UIStyleHelper.SetChildUIStyle(this, style);
|
UIStyleHelper.SetChildUIStyle(this, style);
|
||||||
|
|
||||||
UIBaseStyle uiColor = UIStyles.GetStyleColor(style);
|
UIBaseStyle uiColor = UIStyles.GetStyleColor(style);
|
||||||
if (!uiColor.IsCustom()) SetStyleColor(uiColor);
|
if (!uiColor.IsCustom()) SetStyleColor(uiColor);
|
||||||
_style = style;
|
_style = style;
|
||||||
UIStyleChanged?.Invoke(this, new EventArgs());
|
UIStyleChanged?.Invoke(this, new EventArgs());
|
||||||
|
this.ResumeLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
public event EventHandler UIStyleChanged;
|
public event EventHandler UIStyleChanged;
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
* 2020-01-01: V2.2.0 增加文件说明
|
* 2020-01-01: V2.2.0 增加文件说明
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Drawing.Drawing2D;
|
using System.Drawing.Drawing2D;
|
||||||
@ -171,7 +172,8 @@ namespace Sunny.UI
|
|||||||
get => symbolSize;
|
get => symbolSize;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
symbolSize = value;
|
symbolSize = Math.Max(value, 16);
|
||||||
|
symbolSize = Math.Min(value, 128);
|
||||||
Invalidate();
|
Invalidate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -741,8 +741,6 @@ namespace Sunny.UI
|
|||||||
|
|
||||||
public static void SetChildUIStyle(Control ctrl, UIStyle style)
|
public static void SetChildUIStyle(Control ctrl, UIStyle style)
|
||||||
{
|
{
|
||||||
ctrl.SuspendLayout();
|
|
||||||
|
|
||||||
List<Control> controls = ctrl.GetUIStyleControls("IStyleInterface");
|
List<Control> controls = ctrl.GetUIStyleControls("IStyleInterface");
|
||||||
foreach (var control in controls)
|
foreach (var control in controls)
|
||||||
{
|
{
|
||||||
@ -767,8 +765,6 @@ namespace Sunny.UI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ctrl.ResumeLayout();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user