mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-01-02 10:43:31 +00:00
Added rotating rotation cursors (think about that one for a sec!)
This commit is contained in:
parent
c3a11386b4
commit
19bbef4cad
@ -224,6 +224,7 @@
|
|||||||
<Compile Include="Services\Interfaces\IProfileEditorService.cs" />
|
<Compile Include="Services\Interfaces\IProfileEditorService.cs" />
|
||||||
<Compile Include="Services\LayerShapeService.cs" />
|
<Compile Include="Services\LayerShapeService.cs" />
|
||||||
<Compile Include="Services\ProfileEditorService.cs" />
|
<Compile Include="Services\ProfileEditorService.cs" />
|
||||||
|
<Compile Include="Utilities\CursorRotator.cs" />
|
||||||
<Compile Include="Utilities\ThemeWatcher.cs" />
|
<Compile Include="Utilities\ThemeWatcher.cs" />
|
||||||
<Compile Include="Behaviors\TreeViewSelectionBehavior.cs" />
|
<Compile Include="Behaviors\TreeViewSelectionBehavior.cs" />
|
||||||
<Compile Include="Utilities\TriggerTracing.cs" />
|
<Compile Include="Utilities\TriggerTracing.cs" />
|
||||||
@ -570,6 +571,18 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="Ninject\Providers\" />
|
<Folder Include="Ninject\Providers\" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Resources\aero_rotate_bl_ico.ico" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Resources\aero_rotate_br_ico.ico" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Resources\aero_rotate_tl_ico.ico" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Resources\aero_rotate_tr_ico.ico" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<PostBuildEvent>
|
<PostBuildEvent>
|
||||||
|
|||||||
40
src/Artemis.UI/Properties/Resources.Designer.cs
generated
40
src/Artemis.UI/Properties/Resources.Designer.cs
generated
@ -150,6 +150,16 @@ namespace Artemis.UI.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Icon aero_rotate_bl_ico {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("aero_rotate_bl_ico", resourceCulture);
|
||||||
|
return ((System.Drawing.Icon)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Byte[].
|
/// Looks up a localized resource of type System.Byte[].
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -160,6 +170,16 @@ namespace Artemis.UI.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Icon aero_rotate_br_ico {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("aero_rotate_br_ico", resourceCulture);
|
||||||
|
return ((System.Drawing.Icon)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Byte[].
|
/// Looks up a localized resource of type System.Byte[].
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -170,6 +190,16 @@ namespace Artemis.UI.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Icon aero_rotate_tl_ico {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("aero_rotate_tl_ico", resourceCulture);
|
||||||
|
return ((System.Drawing.Icon)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Byte[].
|
/// Looks up a localized resource of type System.Byte[].
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -180,6 +210,16 @@ namespace Artemis.UI.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Icon aero_rotate_tr_ico {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("aero_rotate_tr_ico", resourceCulture);
|
||||||
|
return ((System.Drawing.Icon)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Byte[].
|
/// Looks up a localized resource of type System.Byte[].
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@ -145,15 +145,27 @@
|
|||||||
<data name="aero_rotate_bl" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="aero_rotate_bl" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\aero_rotate_bl.cur;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>..\Resources\aero_rotate_bl.cur;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="aero_rotate_bl_ico" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\aero_rotate_bl_ico.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="aero_rotate_br" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="aero_rotate_br" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\aero_rotate_br.cur;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>..\Resources\aero_rotate_br.cur;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="aero_rotate_br_ico" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\aero_rotate_br_ico.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="aero_rotate_tl" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="aero_rotate_tl" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\aero_rotate_tl.cur;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>..\Resources\aero_rotate_tl.cur;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="aero_rotate_tl_ico" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\aero_rotate_tl_ico.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="aero_rotate_tr" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="aero_rotate_tr" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\aero_rotate_tr.cur;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>..\Resources\aero_rotate_tr.cur;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="aero_rotate_tr_ico" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\aero_rotate_tr_ico.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="bow" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="bow" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\bow.svg;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>..\Resources\bow.svg;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
BIN
src/Artemis.UI/Resources/aero_rotate_bl_ico.ico
Normal file
BIN
src/Artemis.UI/Resources/aero_rotate_bl_ico.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
BIN
src/Artemis.UI/Resources/aero_rotate_br_ico.ico
Normal file
BIN
src/Artemis.UI/Resources/aero_rotate_br_ico.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
BIN
src/Artemis.UI/Resources/aero_rotate_tl_ico.ico
Normal file
BIN
src/Artemis.UI/Resources/aero_rotate_tl_ico.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
BIN
src/Artemis.UI/Resources/aero_rotate_tr_ico.ico
Normal file
BIN
src/Artemis.UI/Resources/aero_rotate_tr_ico.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
@ -19,28 +19,28 @@
|
|||||||
Canvas.Left="{Binding TopLeft.X}"
|
Canvas.Left="{Binding TopLeft.X}"
|
||||||
Canvas.Top="{Binding TopLeft.Y}"
|
Canvas.Top="{Binding TopLeft.Y}"
|
||||||
Fill="Transparent"
|
Fill="Transparent"
|
||||||
MouseDown="{s:Action ShapeEditMouseDown}" MouseUp="{s:Action ShapeEditMouseUp}" MouseMove="{s:Action Rotate}" Cursor="Cross" />
|
MouseDown="{s:Action ShapeEditMouseDown}" MouseUp="{s:Action ShapeEditMouseUp}" MouseMove="{s:Action Rotate}" Cursor="{Binding TopLeftRotateCursor}" />
|
||||||
<Ellipse Width="{Binding RotateSize}"
|
<Ellipse Width="{Binding RotateSize}"
|
||||||
Height="{Binding RotateSize}"
|
Height="{Binding RotateSize}"
|
||||||
Margin="{Binding RotateOffset}"
|
Margin="{Binding RotateOffset}"
|
||||||
Canvas.Left="{Binding TopRight.X}"
|
Canvas.Left="{Binding TopRight.X}"
|
||||||
Canvas.Top="{Binding TopRight.Y}"
|
Canvas.Top="{Binding TopRight.Y}"
|
||||||
Fill="Transparent"
|
Fill="Transparent"
|
||||||
MouseDown="{s:Action ShapeEditMouseDown}" MouseUp="{s:Action ShapeEditMouseUp}" MouseMove="{s:Action Rotate}" Cursor="Cross" />
|
MouseDown="{s:Action ShapeEditMouseDown}" MouseUp="{s:Action ShapeEditMouseUp}" MouseMove="{s:Action Rotate}" Cursor="{Binding TopRightRotateCursor}" />
|
||||||
<Ellipse Width="{Binding RotateSize}"
|
<Ellipse Width="{Binding RotateSize}"
|
||||||
Height="{Binding RotateSize}"
|
Height="{Binding RotateSize}"
|
||||||
Margin="{Binding RotateOffset}"
|
Margin="{Binding RotateOffset}"
|
||||||
Canvas.Left="{Binding BottomRight.X}"
|
Canvas.Left="{Binding BottomRight.X}"
|
||||||
Canvas.Top="{Binding BottomRight.Y}"
|
Canvas.Top="{Binding BottomRight.Y}"
|
||||||
Fill="Transparent"
|
Fill="Transparent"
|
||||||
MouseDown="{s:Action ShapeEditMouseDown}" MouseUp="{s:Action ShapeEditMouseUp}" MouseMove="{s:Action Rotate}" Cursor="Cross" />
|
MouseDown="{s:Action ShapeEditMouseDown}" MouseUp="{s:Action ShapeEditMouseUp}" MouseMove="{s:Action Rotate}" Cursor="{Binding BottomRightRotateCursor}" />
|
||||||
<Ellipse Width="{Binding RotateSize}"
|
<Ellipse Width="{Binding RotateSize}"
|
||||||
Height="{Binding RotateSize}"
|
Height="{Binding RotateSize}"
|
||||||
Margin="{Binding RotateOffset}"
|
Margin="{Binding RotateOffset}"
|
||||||
Canvas.Left="{Binding BottomLeft.X}"
|
Canvas.Left="{Binding BottomLeft.X}"
|
||||||
Canvas.Top="{Binding BottomLeft.Y}"
|
Canvas.Top="{Binding BottomLeft.Y}"
|
||||||
Fill="Transparent"
|
Fill="Transparent"
|
||||||
MouseDown="{s:Action ShapeEditMouseDown}" MouseUp="{s:Action ShapeEditMouseUp}" MouseMove="{s:Action Rotate}" Cursor="Cross" />
|
MouseDown="{s:Action ShapeEditMouseDown}" MouseUp="{s:Action ShapeEditMouseUp}" MouseMove="{s:Action Rotate}" Cursor="{Binding BottomLeftRotateCursor}" />
|
||||||
<!-- The part of the layer's shape that is inside the layer -->
|
<!-- The part of the layer's shape that is inside the layer -->
|
||||||
<Path Data="{Binding ShapeGeometry, Mode=OneWay}"
|
<Path Data="{Binding ShapeGeometry, Mode=OneWay}"
|
||||||
Fill="Transparent"
|
Fill="Transparent"
|
||||||
|
|||||||
@ -4,8 +4,10 @@ using System.Windows;
|
|||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using Artemis.Core.Models.Profile;
|
using Artemis.Core.Models.Profile;
|
||||||
|
using Artemis.UI.Properties;
|
||||||
using Artemis.UI.Services;
|
using Artemis.UI.Services;
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
|
using Artemis.UI.Utilities;
|
||||||
using SkiaSharp;
|
using SkiaSharp;
|
||||||
using SkiaSharp.Views.WPF;
|
using SkiaSharp.Views.WPF;
|
||||||
using Stylet;
|
using Stylet;
|
||||||
@ -60,6 +62,11 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools
|
|||||||
public SKPoint BottomCenter { get; set; }
|
public SKPoint BottomCenter { get; set; }
|
||||||
public SKPoint LeftCenter { get; set; }
|
public SKPoint LeftCenter { get; set; }
|
||||||
|
|
||||||
|
public Cursor TopLeftRotateCursor { get; set; }
|
||||||
|
public Cursor TopRightRotateCursor { get; set; }
|
||||||
|
public Cursor BottomRightRotateCursor { get; set; }
|
||||||
|
public Cursor BottomLeftRotateCursor { get; set; }
|
||||||
|
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
if (!(ProfileEditorService.SelectedProfileElement is Layer layer))
|
if (!(ProfileEditorService.SelectedProfileElement is Layer layer))
|
||||||
@ -80,6 +87,11 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools
|
|||||||
BottomCenter = new SKPoint((BottomLeft.X + BottomRight.X) / 2, (BottomLeft.Y + BottomRight.Y) / 2);
|
BottomCenter = new SKPoint((BottomLeft.X + BottomRight.X) / 2, (BottomLeft.Y + BottomRight.Y) / 2);
|
||||||
LeftCenter = new SKPoint((TopLeft.X + BottomLeft.X) / 2, (TopLeft.Y + BottomLeft.Y) / 2);
|
LeftCenter = new SKPoint((TopLeft.X + BottomLeft.X) / 2, (TopLeft.Y + BottomLeft.Y) / 2);
|
||||||
|
|
||||||
|
TopLeftRotateCursor = CursorUtilities.GetRotatedCursor(Resources.aero_rotate_tl_ico, layer.RotationProperty.CurrentValue);
|
||||||
|
TopRightRotateCursor = CursorUtilities.GetRotatedCursor(Resources.aero_rotate_tr_ico, layer.RotationProperty.CurrentValue);
|
||||||
|
BottomRightRotateCursor = CursorUtilities.GetRotatedCursor(Resources.aero_rotate_br_ico, layer.RotationProperty.CurrentValue);
|
||||||
|
BottomLeftRotateCursor = CursorUtilities.GetRotatedCursor(Resources.aero_rotate_bl_ico, layer.RotationProperty.CurrentValue);
|
||||||
|
|
||||||
Execute.PostToUIThread(() =>
|
Execute.PostToUIThread(() =>
|
||||||
{
|
{
|
||||||
var shapeGeometry = new RectangleGeometry(_layerEditorService.GetShapeRenderRect(layer.LayerShape))
|
var shapeGeometry = new RectangleGeometry(_layerEditorService.GetShapeRenderRect(layer.LayerShape))
|
||||||
|
|||||||
86
src/Artemis.UI/Utilities/CursorRotator.cs
Normal file
86
src/Artemis.UI/Utilities/CursorRotator.cs
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
using System.Drawing;
|
||||||
|
using System.Drawing.Imaging;
|
||||||
|
using System.IO;
|
||||||
|
using System.Windows.Input;
|
||||||
|
|
||||||
|
namespace Artemis.UI.Utilities
|
||||||
|
{
|
||||||
|
public static class CursorUtilities
|
||||||
|
{
|
||||||
|
public static Cursor GetRotatedCursor(Icon icon, float rotationAngle)
|
||||||
|
{
|
||||||
|
// Load as Bitmap, convert to BitmapSource
|
||||||
|
using (var iconStream = new MemoryStream())
|
||||||
|
using (var rotatedStream = new MemoryStream())
|
||||||
|
{
|
||||||
|
icon.Save(iconStream);
|
||||||
|
|
||||||
|
// Open the source image and create the bitmap for the rotated image
|
||||||
|
using (var sourceImage = icon.ToBitmap())
|
||||||
|
using (var rotateImage = new Bitmap(sourceImage.Width, sourceImage.Height))
|
||||||
|
{
|
||||||
|
// Set the resolution for the rotation image
|
||||||
|
rotateImage.SetResolution(sourceImage.HorizontalResolution, sourceImage.VerticalResolution);
|
||||||
|
// Create a graphics object
|
||||||
|
using (var gdi = Graphics.FromImage(rotateImage))
|
||||||
|
{
|
||||||
|
//Rotate the image
|
||||||
|
gdi.TranslateTransform((float) sourceImage.Width / 2, (float) sourceImage.Height / 2);
|
||||||
|
gdi.RotateTransform(rotationAngle);
|
||||||
|
gdi.TranslateTransform(-(float) sourceImage.Width / 2, -(float) sourceImage.Height / 2);
|
||||||
|
gdi.DrawImage(sourceImage, new Point(0, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save to a file
|
||||||
|
IconFromImage(rotateImage).Save(rotatedStream);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert saved file into .cur format
|
||||||
|
rotatedStream.Seek(2, SeekOrigin.Begin);
|
||||||
|
rotatedStream.Write(iconStream.ToArray(), 2, 1);
|
||||||
|
rotatedStream.Seek(10, SeekOrigin.Begin);
|
||||||
|
rotatedStream.Write(iconStream.ToArray(), 10, 2);
|
||||||
|
rotatedStream.Seek(0, SeekOrigin.Begin);
|
||||||
|
|
||||||
|
// Construct Cursor
|
||||||
|
return new Cursor(rotatedStream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Icon IconFromImage(Image img)
|
||||||
|
{
|
||||||
|
using (var ms = new MemoryStream())
|
||||||
|
using (var bw = new BinaryWriter(ms))
|
||||||
|
{
|
||||||
|
// Header
|
||||||
|
bw.Write((short) 0); // 0 : reserved
|
||||||
|
bw.Write((short) 1); // 2 : 1=ico, 2=cur
|
||||||
|
bw.Write((short) 1); // 4 : number of images
|
||||||
|
// Image directory
|
||||||
|
var w = img.Width;
|
||||||
|
if (w >= 256) w = 0;
|
||||||
|
bw.Write((byte) w); // 0 : width of image
|
||||||
|
var h = img.Height;
|
||||||
|
if (h >= 256) h = 0;
|
||||||
|
bw.Write((byte) h); // 1 : height of image
|
||||||
|
bw.Write((byte) 0); // 2 : number of colors in palette
|
||||||
|
bw.Write((byte) 0); // 3 : reserved
|
||||||
|
bw.Write((short) 0); // 4 : number of color planes
|
||||||
|
bw.Write((short) 0); // 6 : bits per pixel
|
||||||
|
var sizeHere = ms.Position;
|
||||||
|
bw.Write(0); // 8 : image size
|
||||||
|
var start = (int) ms.Position + 4;
|
||||||
|
bw.Write(start); // 12: offset of image data
|
||||||
|
// Image data
|
||||||
|
img.Save(ms, ImageFormat.Png);
|
||||||
|
var imageSize = (int) ms.Position - start;
|
||||||
|
ms.Seek(sizeHere, SeekOrigin.Begin);
|
||||||
|
bw.Write(imageSize);
|
||||||
|
ms.Seek(0, SeekOrigin.Begin);
|
||||||
|
|
||||||
|
// And load it
|
||||||
|
return new Icon(ms);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user