diff options
author | Lluis Sanchez <lluis@xamarin.com> | 2013-11-29 14:32:52 +0400 |
---|---|---|
committer | Lluis Sanchez <lluis@xamarin.com> | 2013-11-29 14:32:52 +0400 |
commit | 812692fb3e20d8655febd9d329f25205689bb262 (patch) | |
tree | d29d6a739e6c2bc6d3fb10bb7a39c9fc37abb2ee /Xwt.WPF | |
parent | 5b1f32a80ec4d8e98d26441d29ee1def2494d34b (diff) |
[WPF] Bitmap support fixes
Properly implemented image cropping.
Implement GetScaleFactor.
Diffstat (limited to 'Xwt.WPF')
-rw-r--r-- | Xwt.WPF/Xwt.WPFBackend/ContextBackendHandler.cs | 5 | ||||
-rw-r--r-- | Xwt.WPF/Xwt.WPFBackend/ImageHandler.cs | 19 |
2 files changed, 8 insertions, 16 deletions
diff --git a/Xwt.WPF/Xwt.WPFBackend/ContextBackendHandler.cs b/Xwt.WPF/Xwt.WPFBackend/ContextBackendHandler.cs index f6e8d705..cfbaa1da 100644 --- a/Xwt.WPF/Xwt.WPFBackend/ContextBackendHandler.cs +++ b/Xwt.WPF/Xwt.WPFBackend/ContextBackendHandler.cs @@ -46,6 +46,11 @@ namespace Xwt.WPFBackend public class WpfContextBackendHandler : ContextBackendHandler { + public override double GetScaleFactor (object backend) + { + var c = (DrawingContext)backend; + return c.ScaleFactor; + } public override void Save (object backend) { var c = (DrawingContext) backend; diff --git a/Xwt.WPF/Xwt.WPFBackend/ImageHandler.cs b/Xwt.WPF/Xwt.WPFBackend/ImageHandler.cs index 6d672c93..d53af270 100644 --- a/Xwt.WPF/Xwt.WPFBackend/ImageHandler.cs +++ b/Xwt.WPF/Xwt.WPFBackend/ImageHandler.cs @@ -254,22 +254,9 @@ namespace Xwt.WPFBackend public override object CropBitmap(object handle, int srcX, int srcY, int w, int h) { - var oldImg = (SWMI.BitmapSource)DataConverter.AsImageSource (handle); - - double width = WidthToDPI (oldImg, w); - double height = HeightToDPI (oldImg, h); - - SWM.DrawingVisual visual = new SWM.DrawingVisual (); - using (SWM.DrawingContext ctx = visual.RenderOpen ()) - { - //Not sure whether this actually works, untested - ctx.DrawImage(oldImg, new System.Windows.Rect (-srcX, -srcY, srcX+width, srcY+height)); - } - - SWMI.RenderTargetBitmap bmp = new SWMI.RenderTargetBitmap ((int)width, (int)height, oldImg.DpiX, oldImg.DpiY, PixelFormats.Pbgra32); - bmp.Render (visual); - - return bmp; + var oldImg = (SWMI.BitmapSource)DataConverter.AsImageSource (handle);
+ var bmp = new CroppedBitmap (oldImg, new Int32Rect (srcX, srcY, w, h)); + return new WpfImage (bmp); } public override void CopyBitmapArea (object srcHandle, int srcX, int srcY, int width, int height, object destHandle, int destX, int destY) |