没有 Stretch="Fill" 的 WPF 拉伸图像
Posted
技术标签:
【中文标题】没有 Stretch="Fill" 的 WPF 拉伸图像【英文标题】:WPF stretch image without Stretch="Fill" 【发布时间】:2021-08-17 02:11:24 【问题描述】:我正在尝试制作显示图像的响应式 WPF 应用程序。该程序的功能之一是通过单击并拖动鼠标来选择图像的一部分。我使用Point p = e.GetPosition((IInputElement)sender);
来查找光标位置,但我发现我不能使用Stretch="Fill"
,因为它会导致 MouseUp 光标选择的位置比它应该选择的低一点,而且 MouseMove 也不准确(我必须将鼠标拖得更远我应该)。在互联网上,我发现这种行为的原因是您不能使用Fill
,而必须使用None
。但是,如果没有Fill
,图像会小很多。
这是我的 XAML:
<Grid Grid.Row = "1"
Grid.Column="1"
HorizontalAlignment="Left"
VerticalAlignment= "Top"
Margin="0,30,0,0">
<Image x:Name= "image1"
Grid.Row = "1"
Grid.Column="1"
Cursor="Cross"
MinWidth="300"
MinHeight="300"
MaxWidth="512"
MaxHeight= "512"
Stretch = "None"
RenderOptions.BitmapScalingMode="NearestNeighbor"
RenderOptions.EdgeMode="Aliased"
VerticalAlignment="Top"
MouseDown="picOriginal_MouseDown"
MouseMove="picOriginal_MouseMove"
MouseUp="picOriginal_MouseUp" />
</Grid>
我不知道如何嵌入我的图像,以便在窗口视图中填充没有此Fill
属性的网格,同时响应全屏。我应该用 WPF 工具箱中的其他东西包装 Image 吗?
【问题讨论】:
我检查了您的 XAML,但发现 Stretch="Fill" 和 Stretch="None" 在鼠标位置方面没有明显区别。 选择一张图片是什么意思?视图框可能会有所帮助,但您让我们猜到了您在做什么。 @Andy 对不起,如果我没有说清楚。假设有一张照片,我们想用鼠标标记某个正方形区域,以放大该区域。并且显示该区域(放大)而不是之前的照片。而且我已经有了这个功能,但是由于Stretch = Fill
,鼠标并没有在图像周围非常准确地移动——或者至少这是我在某个论坛上读到的。我的问题是:除了 Stretch 属性之外,还有其他方法可以获得响应式图像吗?
在应用 Stretch = Fill 之后,您应该使用 p.X * image.ScaleX 和 p.Y * image.ScaleY 而不是 p.X 和 p.Y
【参考方案1】:
我发现使用图片框的背景作为图像然后在其中使用拉伸更容易。或者,您可以将图像与任何其他选项一起使用,尝试使用属性选项卡,以下是其他拉伸选项:无、填充、均匀、均匀填充
如果这有帮助,请告诉我,尝试获得代表,谢谢!
【讨论】:
以上是关于没有 Stretch="Fill" 的 WPF 拉伸图像的主要内容,如果未能解决你的问题,请参考以下文章
Debian 9.x "stretch" 解决 /etc/rc.local 开机启动问题