When switched to drawing mode, draw small square in cursor using border color and size

This commit is contained in:
Jaex 2016-07-05 08:52:49 +03:00
parent f237ea6255
commit a2c905a0c8

View file

@ -28,6 +28,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq; using System.Linq;
using System.Windows.Forms; using System.Windows.Forms;
@ -436,6 +437,7 @@ private void CreateContextMenu()
} }
UpdateCurrentShape(); UpdateCurrentShape();
UpdateCursor();
}; };
cmsContextMenu.Items.Add(tslnudBorderSize); cmsContextMenu.Items.Add(tslnudBorderSize);
@ -1491,27 +1493,47 @@ private void UpdateCursor()
{ {
Cursor cursor = Helpers.CreateCursor(Resources.Crosshair); Cursor cursor = Helpers.CreateCursor(Resources.Crosshair);
if (!IsCurrentShapeTypeRegion) if (CurrentShapeType == ShapeType.DrawingRectangle || CurrentShapeType == ShapeType.DrawingRoundedRectangle || CurrentShapeType == ShapeType.DrawingEllipse ||
CurrentShapeType == ShapeType.DrawingLine || CurrentShapeType == ShapeType.DrawingArrow)
{ {
using (Bitmap bmp = new Bitmap(32, 32)) using (Bitmap bmp = new Bitmap(32, 32))
using (Graphics g = Graphics.FromImage(bmp)) using (Graphics g = Graphics.FromImage(bmp))
{ {
using (Pen pen = new Pen(Config.AnnotationOptions.BorderColor, 2)) if (Config.AnnotationOptions.BorderSize.IsBetween(1, 4))
{ {
g.DrawRectangleProper(pen, new Rectangle(2, 2, 27, 27)); using (Pen pen = new Pen(Config.AnnotationOptions.BorderColor, Config.AnnotationOptions.BorderSize) { Alignment = PenAlignment.Inset })
{
g.DrawRectangleProper(pen, new Rectangle(0, 0, 10, 10));
}
}
else
{
using (Brush brush = new SolidBrush(Config.AnnotationOptions.BorderColor))
{
g.FillRectangle(brush, new Rectangle(0, 0, 10, 10));
}
} }
cursor.Draw(g, new Rectangle(0, 0, 32, 32)); cursor.Draw(g, new Rectangle(0, 0, 32, 32));
IntPtr ptr = bmp.GetHicon();
IconInfo iconInfo = new IconInfo();
NativeMethods.GetIconInfo(ptr, out iconInfo);
iconInfo.xHotspot = 15;
iconInfo.yHotspot = 15;
iconInfo.fIcon = false;
ptr = NativeMethods.CreateIconIndirect(ref iconInfo);
cursor.Dispose(); cursor.Dispose();
cursor = new Cursor(ptr);
IntPtr iconPtr = IntPtr.Zero;
try
{
iconPtr = bmp.GetHicon();
IconInfo iconInfo = new IconInfo();
NativeMethods.GetIconInfo(iconPtr, out iconInfo);
iconInfo.xHotspot = 15;
iconInfo.yHotspot = 15;
iconInfo.fIcon = false;
IntPtr newIconPtr = NativeMethods.CreateIconIndirect(ref iconInfo);
cursor = new Cursor(newIconPtr);
}
finally
{
if (iconPtr != IntPtr.Zero) NativeMethods.DestroyIcon(iconPtr);
}
} }
} }