Skip to content

Commit ab9a9f2

Browse files
committed
范围选择 粘贴时图片背景设为透明
1 parent e1c862e commit ab9a9f2

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

DrawKit/Shapes/RectangularSelection.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,11 @@ private void MouseLeftButtonDownHandle(MouseEventArgs e)
109109
_copySelectedBitmap = null;
110110
_copySelectedBitmap = (Bitmap)_selectedBitmap.Clone();
111111
CommitCurrentShape();
112+
_selectedBitmap?.Dispose();
113+
_selectedBitmap = null;
112114
_selectedBitmap = (Bitmap)_copySelectedBitmap.Clone();
113115
SelectionRect = rect;
116+
GC.Collect();
114117
}
115118
Offset = e.Location;
116119
drawStatus = DrawStatus.Moving;
@@ -451,6 +454,7 @@ private void CopySelectionRectToClipboard()
451454
var bitmap = RestoreBitmap(_selectedBitmap, Scale);
452455
Clipboard.SetImage(bitmap);
453456
bitmap?.Dispose();
457+
bitmap = null;
454458
_copySelectedBitmap?.Dispose();
455459
_copySelectedBitmap = null;
456460
_copySelectedBitmap = (Bitmap)_selectedBitmap.Clone();
@@ -472,6 +476,7 @@ private Bitmap RestoreBitmap(Bitmap scaledBitmap, float scale)
472476
}
473477
return result;
474478
}
479+
475480
private Bitmap EnlargeBitmap(Bitmap originalBitmap,float scale)
476481
{
477482
int newWidth = (int)(originalBitmap.Width * scale);
@@ -480,10 +485,17 @@ private Bitmap EnlargeBitmap(Bitmap originalBitmap,float scale)
480485
Bitmap enlargedBitmap = new Bitmap(newWidth, newHeight);
481486
using (Graphics g = Graphics.FromImage(enlargedBitmap))
482487
{
488+
ImageAttributes imageAttr = new ImageAttributes();
489+
imageAttr.SetColorKey(Color.White, Color.White);
483490
g.CompositingQuality = CompositingQuality.HighQuality;
484491
g.InterpolationMode = InterpolationMode.NearestNeighbor;
485492
g.SmoothingMode = SmoothingMode.None;
486-
g.DrawImage(originalBitmap, new Rectangle(0, 0, newWidth, newHeight));
493+
//g.DrawImage(originalBitmap, new Rectangle(0, 0, newWidth, newHeight));
494+
g.DrawImage(originalBitmap,
495+
new Rectangle(0, 0, newWidth, newHeight),
496+
0, 0, originalBitmap.Width, originalBitmap.Height,
497+
GraphicsUnit.Pixel,
498+
imageAttr);
487499
}
488500
return enlargedBitmap;
489501
}
@@ -492,6 +504,8 @@ private void PasteBitmapFromClipboard()
492504
var bitmap = (Bitmap)Clipboard.GetImage();
493505
if (bitmap == null) return;
494506
CommitCurrentShape();
507+
_selectedBitmap?.Dispose();
508+
_selectedBitmap = null;
495509
_selectedBitmap = EnlargeBitmap(bitmap,Scale);
496510
var scrollPos = new Point(Math.Abs(panel.AutoScrollPosition.X), Math.Abs(panel.AutoScrollPosition.Y));
497511
var rect = GetCanvasRegion();

DrawKit/Shapes/ShapeRectangle.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,6 @@ private void DrawCreating(Graphics graphics)
230230
private void DrawCanMoveOrAdjusted(Graphics graphics)
231231
{
232232
tempCanvas = GetTempCanvas();
233-
tempCanvas = (Bitmap)canvas.Clone();
234233
using (Graphics g = Graphics.FromImage(tempCanvas))
235234
{
236235
using (Pen selectionPen = new Pen(ForeColor, Size))

0 commit comments

Comments
 (0)