2026-01-26 18:56:53 +09:00

53 lines
1.7 KiB
C#

/*
* Copyright (c) 2025 LG Electronics Inc.
* SPDX-License-Identifier: LicenseRef-LGE-Proprietary
*/
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using Brush = System.Windows.Media.Brush;
using Pen = System.Windows.Media.Pen;
using Size = System.Windows.Size;
using Cursor = System.Windows.Forms.Cursor;
namespace VisionCommon {
public static class WinformCursorHelper {
public static Cursor CreateRectCursor(Brush brush, Pen pen, Size size) {
var bitmap = CreateRectBitmap(brush, pen, size);
IntPtr handle = bitmap.GetHicon();
return new Cursor(handle);
}
public static Bitmap CreateRectBitmap(Brush brush, Pen pen, Size size) {
System.Drawing.Bitmap bitmap;
var vis = new DrawingVisual();
using (var dc = vis.RenderOpen()) {
dc.DrawRectangle(brush, pen, new Rect(0, 0, size.Width, size.Height));
dc.Close();
}
var rtb = new RenderTargetBitmap((int)size.Width, (int)size.Height, 96, 96, PixelFormats.Pbgra32);
rtb.Render(vis);
using (var ms1 = new MemoryStream()) {
var pngEncoder = new PngBitmapEncoder();
pngEncoder.Frames.Add(BitmapFrame.Create(rtb));
pngEncoder.Save(ms1);
bitmap = new System.Drawing.Bitmap(ms1);
}
return bitmap;
}
}
}