【发布时间】:2020-07-13 09:31:48
【问题描述】:
所以我有一个包含图像的 UserControl
<StackPanel>
<Image HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="RenderingImage"
RenderTransformOrigin="0,0" Stretch="None" Source="{Binding}" RenderTransform="{Binding}"/>
</StackPanel>
只要显示的图像为 96 或以上,一切正常。对于较小的 DPI 图像,由于某种原因,图像组件会裁剪图像
具体来说,这张图片是 72dpi。有什么办法可以避免这种情况,除了改变拉伸?将 Stretch 更改为 Fill/Uniform 似乎可行,但这改变了我为这个特定 UC 实现缩放和其他事件的方式。我想避免这种情况。保留图像的原始大小也很重要,而拉伸显然对我没有帮助。
【问题讨论】:
-
假设
source是原始的BitmapSource,如果你使用new TransformedBitmap(source, new ScaleTransform(source.DpiX / 96, source.DpiY / 96))作为Image的Source呢? -
@Clemens 这无济于事,它改变了图像的比例。我已经这样做了以进行缩放。它仍然不适合孔位图到图像组件中。
-
它不会改变 Image 元素的比例,只会改变它的 Source 位图。但是,我们当然需要更多关于您实际在做什么的详细信息,以便能够提供任何帮助。
-
@Clemens 你想知道什么细节,我可以告诉你。我有一个带有图像(WritableBitmap)并允许用户对图像执行缩放的 UserControl。我使用 ScaleX/ScaleY 进行缩放。
-
@Clemens 我已经尝试过您的解决方案并且它有效,请您详细说明一下,我不知道它为什么有效。