add Pilz.UI.Telerik & Pilz.UI.Telerik.SymbolFactory
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<PackageId>Pilz.UI.Telerik</PackageId>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,15 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0-windows</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<RootNamespace>Pilz.UI.Telerik</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="System.Drawing.Common" Version="7.0.0" />
|
||||
<PackageReference Include="UI.for.WinForms.Common" Version="2023.1.117" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
16
Pilz.UI.Telerik.SymbolFactory/SvgImageSize.cs
Normal file
16
Pilz.UI.Telerik.SymbolFactory/SvgImageSize.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Pilz.UI.Telerik
|
||||
{
|
||||
public enum SvgImageSize
|
||||
{
|
||||
Default,
|
||||
Small,
|
||||
Medium,
|
||||
Large
|
||||
}
|
||||
}
|
||||
87
Pilz.UI.Telerik.SymbolFactory/SymbolFactory.cs
Normal file
87
Pilz.UI.Telerik.SymbolFactory/SymbolFactory.cs
Normal file
@@ -0,0 +1,87 @@
|
||||
using System.Drawing;
|
||||
using System.Reflection;
|
||||
using Telerik.WinControls;
|
||||
using Telerik.WinControls.Svg;
|
||||
|
||||
namespace Pilz.UI.Telerik
|
||||
{
|
||||
public abstract class SymbolFactory<TSvgSymbols> where TSvgSymbols : Enum
|
||||
{
|
||||
public abstract string GetSvgImageRessourcePath(TSvgSymbols svgImage);
|
||||
public abstract Assembly GetSvgImageResourceAssembly();
|
||||
|
||||
protected virtual Size ResolveCommonSize(SvgImageSize size)
|
||||
{
|
||||
return size switch
|
||||
{
|
||||
SvgImageSize.Small => new Size(16, 16),
|
||||
SvgImageSize.Medium => new Size(20, 20),
|
||||
SvgImageSize.Large => new Size(32, 32),
|
||||
_ => Size.Empty,
|
||||
};
|
||||
}
|
||||
|
||||
public virtual Stream? GetSvgImageRessourceStream(TSvgSymbols svgImage)
|
||||
{
|
||||
var asm = GetSvgImageResourceAssembly();
|
||||
var path = GetSvgImageRessourcePath(svgImage);
|
||||
return asm.GetManifestResourceStream(path);
|
||||
}
|
||||
|
||||
public virtual RadSvgImage GetSvgImage(TSvgSymbols svgImage, SvgImageSize size)
|
||||
{
|
||||
return GetSvgImage(svgImage, ResolveCommonSize(size));
|
||||
}
|
||||
|
||||
public virtual RadSvgImage GetSvgImage(TSvgSymbols svgImage, Size size)
|
||||
{
|
||||
using var stream = GetSvgImageRessourceStream(svgImage);
|
||||
var img = RadSvgImage.FromStream(stream);
|
||||
|
||||
if (size.IsEmpty)
|
||||
img.Size = size;
|
||||
|
||||
return img;
|
||||
}
|
||||
|
||||
public virtual RadSvgImage GetSvgImageColored(TSvgSymbols svgImage, SvgImageSize size, Color color)
|
||||
{
|
||||
return GetSvgImageColored(svgImage, ResolveCommonSize(size), color);
|
||||
}
|
||||
|
||||
public virtual RadSvgImage GetSvgImageColored(TSvgSymbols svgImage, Size size, Color color)
|
||||
{
|
||||
var img = GetSvgImage(svgImage, size);
|
||||
|
||||
img.Document.Fill = new SvgColourServer(color);
|
||||
img.ClearCache();
|
||||
|
||||
return img;
|
||||
}
|
||||
|
||||
public virtual Image GetImage(TSvgSymbols svgImage, SvgImageSize size)
|
||||
{
|
||||
return GetImage(svgImage, ResolveCommonSize(size));
|
||||
}
|
||||
|
||||
public virtual Image GetImage(TSvgSymbols svgImage, Size size)
|
||||
{
|
||||
return GetImageFromSvg(GetSvgImage(svgImage, size));
|
||||
}
|
||||
|
||||
public virtual Image GetImageColored(TSvgSymbols svgImage, SvgImageSize size, Color color)
|
||||
{
|
||||
return GetImageColored(svgImage, ResolveCommonSize(size), color);
|
||||
}
|
||||
|
||||
public virtual Image GetImageColored(TSvgSymbols svgImage, Size size, Color color)
|
||||
{
|
||||
return GetImageFromSvg(GetSvgImageColored(svgImage, size, color));
|
||||
}
|
||||
|
||||
public virtual Image GetImageFromSvg(RadSvgImage svg)
|
||||
{
|
||||
return svg.Document.Draw(svg.Width, svg.Height);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user