@@ -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 ( ) ;
0 commit comments