49 lines
1.5 KiB
C#
49 lines
1.5 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|