【发布时间】:2023-03-19 08:18:01
【问题描述】:
我正在编写一个 WPF 应用程序,它显示最初居中的图像。用户可以放大/缩小和移动图像,使用ScaleTransform和TranslateTransform实现。效果很好。
问题是当图像明显大于窗口时,用户移动图像或缩小到足以使整个图像可见。最初隐藏的图像部分不会被渲染,而是只绘制图像最初可见的部分。
基于一些otherquestions,如果我将我的图像放在Canvas 中,这将导致整个图像被渲染,并且在移动时它将被正确渲染。问题是我不希望我的图像位于 Canvas 中,因为这会阻止任何其他布局发生 - HorizontalAlignment 和 VerticalAlignment 属性被忽略(因此图像不再居中),并且我需要实现一个选项,该选项将尽可能大地绘制图像以填充不再起作用的窗口的整个区域(将Stretch 属性设置为UniformToFill 没有任何作用)。
目前这两个转换都设置为RenderTransform 属性。如果我改用LayoutTransform,则会绘制整个图像,但这也会阻止用户将图像的任何部分移出窗口边缘(这是我希望保留的行为)。
如何告诉 WPF 在不使用 Canvas 或 LayoutTransform 的情况下始终呈现整个图像?
【问题讨论】: