Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/xwt.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLluis Sanchez <lluis@xamarin.com>2013-12-11 16:09:11 +0400
committerLluis Sanchez <lluis@xamarin.com>2013-12-11 16:11:53 +0400
commita8e5cbb0351faf69b823eab97a697db2ec264e72 (patch)
tree145560f91117c1a56dcf3ed9b9575eff6db0a864 /Xwt.WPF
parentc7b80f72086331c73d78e74abe258e42f02a0e96 (diff)
[WPF] Fixed pattern rendering issues
Diffstat (limited to 'Xwt.WPF')
-rw-r--r--Xwt.WPF/Xwt.WPFBackend/ImageHandler.cs2
-rw-r--r--Xwt.WPF/Xwt.WPFBackend/ImagePatternBackendHandler.cs32
2 files changed, 18 insertions, 16 deletions
diff --git a/Xwt.WPF/Xwt.WPFBackend/ImageHandler.cs b/Xwt.WPF/Xwt.WPFBackend/ImageHandler.cs
index 77e19601..40bb64b1 100644
--- a/Xwt.WPF/Xwt.WPFBackend/ImageHandler.cs
+++ b/Xwt.WPF/Xwt.WPFBackend/ImageHandler.cs
@@ -408,7 +408,7 @@ namespace Xwt.WPFBackend
public ImageSource GetBestFrame (ApplicationContext actx, double scaleFactor, double width, double height, bool forceExactSize)
{
var f = FindFrame (width, height, scaleFactor);
- if (f == null || (forceExactSize && (f.Width != (int)width || f.Height != (int)height)))
+ if (f == null || (forceExactSize && (Math.Abs (f.Width - width * scaleFactor) > 0.01 || Math.Abs (f.Height - height * scaleFactor) > 0.01)))
return RenderFrame (actx, scaleFactor, width, height);
else
return f;
diff --git a/Xwt.WPF/Xwt.WPFBackend/ImagePatternBackendHandler.cs b/Xwt.WPF/Xwt.WPFBackend/ImagePatternBackendHandler.cs
index 8449b193..091e5ff8 100644
--- a/Xwt.WPF/Xwt.WPFBackend/ImagePatternBackendHandler.cs
+++ b/Xwt.WPF/Xwt.WPFBackend/ImagePatternBackendHandler.cs
@@ -58,21 +58,23 @@ namespace Xwt.WPFBackend
public ImageBrush GetBrush (double scaleFactor)
{
- if (brush == null || scaleFactor != this.scaleFactor) {
- this.scaleFactor = scaleFactor;
- var ib = (WpfImage)image.Backend;
- var bmp = ib.GetBestFrame (actx, scaleFactor, image.Size.Width, image.Size.Height, true);
- brush = new ImageBrush (bmp) {
- TileMode = TileMode.Tile,
- ViewportUnits = BrushMappingMode.Absolute,
- AlignmentY = System.Windows.Media.AlignmentY.Top,
- AlignmentX = System.Windows.Media.AlignmentX.Left,
- Stretch = System.Windows.Media.Stretch.None,
- Viewport = new System.Windows.Rect (0, 0, image.Size.Width * scaleFactor, image.Size.Height * scaleFactor),
- Opacity = image.Alpha
- };
- brush.RelativeTransform = new ScaleTransform (1d/scaleFactor, 1d/scaleFactor);
- }
+ if (brush == null || scaleFactor != this.scaleFactor)
+ {
+ this.scaleFactor = scaleFactor;
+ var ib = (WpfImage)image.Backend;
+ var bmp = ib.GetBestFrame(actx, scaleFactor, image.Size.Width, image.Size.Height, false);
+ brush = new ImageBrush(bmp)
+ {
+ TileMode = TileMode.Tile,
+ ViewportUnits = BrushMappingMode.Absolute,
+ AlignmentY = System.Windows.Media.AlignmentY.Top,
+ AlignmentX = System.Windows.Media.AlignmentX.Left,
+ Stretch = System.Windows.Media.Stretch.None,
+ Viewport = new System.Windows.Rect(0, 0, image.Size.Width, image.Size.Height),
+ Opacity = image.Alpha
+ };
+ brush.RelativeTransform = new ScaleTransform(image.Size.Width / bmp.Width, image.Size.Height / bmp.Height);
+ }
return brush;
}
}