mirror of
https://github.com/ShareX/ShareX.git
synced 2024-09-28 23:42:13 +12:00
fixed #5560: If magnifier is close to edges then draw canvas background
This commit is contained in:
parent
f7b100800b
commit
1e8fb8a6fb
1 changed files with 10 additions and 4 deletions
|
@ -1253,6 +1253,9 @@ private Bitmap Magnifier(Image img, Point position, int horizontalPixelCount, in
|
||||||
pixelSize = 10;
|
pixelSize = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Rectangle srcRect = new Rectangle(position.X - (horizontalPixelCount / 2) - CanvasRectangle.X,
|
||||||
|
position.Y - (verticalPixelCount / 2) - CanvasRectangle.Y, horizontalPixelCount, verticalPixelCount);
|
||||||
|
|
||||||
int width = horizontalPixelCount * pixelSize;
|
int width = horizontalPixelCount * pixelSize;
|
||||||
int height = verticalPixelCount * pixelSize;
|
int height = verticalPixelCount * pixelSize;
|
||||||
Bitmap bmp = new Bitmap(width - 1, height - 1);
|
Bitmap bmp = new Bitmap(width - 1, height - 1);
|
||||||
|
@ -1260,11 +1263,14 @@ private Bitmap Magnifier(Image img, Point position, int horizontalPixelCount, in
|
||||||
using (Graphics g = Graphics.FromImage(bmp))
|
using (Graphics g = Graphics.FromImage(bmp))
|
||||||
{
|
{
|
||||||
g.InterpolationMode = InterpolationMode.NearestNeighbor;
|
g.InterpolationMode = InterpolationMode.NearestNeighbor;
|
||||||
|
|
||||||
|
if (!new Rectangle(0, 0, img.Width, img.Height).Contains(srcRect))
|
||||||
|
{
|
||||||
|
g.Clear(canvasBackgroundColor);
|
||||||
|
}
|
||||||
|
|
||||||
g.PixelOffsetMode = PixelOffsetMode.Half;
|
g.PixelOffsetMode = PixelOffsetMode.Half;
|
||||||
|
g.DrawImage(img, new Rectangle(0, 0, width, height), srcRect, GraphicsUnit.Pixel);
|
||||||
g.DrawImage(img, new Rectangle(0, 0, width, height), new Rectangle(position.X - (horizontalPixelCount / 2) - CanvasRectangle.X,
|
|
||||||
position.Y - (verticalPixelCount / 2) - CanvasRectangle.Y, horizontalPixelCount, verticalPixelCount), GraphicsUnit.Pixel);
|
|
||||||
|
|
||||||
g.PixelOffsetMode = PixelOffsetMode.None;
|
g.PixelOffsetMode = PixelOffsetMode.None;
|
||||||
|
|
||||||
using (SolidBrush crosshairBrush = new SolidBrush(Color.FromArgb(125, Color.LightBlue)))
|
using (SolidBrush crosshairBrush = new SolidBrush(Color.FromArgb(125, Color.LightBlue)))
|
||||||
|
|
Loading…
Reference in a new issue