【发布时间】:2010-05-26 12:49:17
【问题描述】:
有没有办法在LayoutTransform 设置为ScaleTransform 的Image 元素中指定图像如何放大,ScaleX 和ScaleY 的整数值为ScaleY?
我想清晰地显示缩放后的图像(即使用“最近邻”缩放),没有模糊。 (想象一下您希望位图编辑程序在放大时的行为方式)。
我注意到Image 上的受保护属性VisualBitmapScalingMode,因此创建了Image 的子类,将该属性设置为BitmapScalingMode.NearestNeighbor。但是,这没有任何效果。
【问题讨论】:
-
我认为您的子类不会改变 ScaleTransform 的工作方式。您是否尝试过手动设置图像尺寸(宽度/高度)以查看是否清晰?
-
很遗憾没有。如果我通过设置宽度和高度来扩展图像,我会得到与应用 ScaleTransform 相同的结果。我认为这是有道理的,无论哪种方式,最终都是图像决定如何在给定大小和位图的情况下呈现自己。
-
您是否使用 TransformedBitmap 获得了更好的结果?
-
好的,如果我在 Image 上覆盖 OnRender,也许我可以指定要在 DrawingContext 中以某种方式使用的缩放算法...
-
好的,开始工作了。虽然我在“MyImage”(我的 Image 子类)的构造函数中设置了 VisualBitmapScalingMode 的值,但在调用 OnRender 时它被设置回未指定。因此,我重写了 OnRender,并将其设置在那里,然后调用 base.OnRender。也许在 WPF 元素的生命周期中有一些覆盖,我可以在其中设置此属性一次,但工作完成了。
标签: wpf image-scaling