gpt4 book ai didi

c# - 在 WPF 中放大图像

转载 作者:行者123 更新时间:2023-12-04 16:10:13 33 4
gpt4 key购买 nike

我有一种方法可以在 WPF 中放大和缩小图像。它看起来像这样:

private void onMouseWheel_Scroll(object sender, MouseWheelEventArgs e)
{
var position = e.MouseDevice.GetPosition(CctvImage);

var renderTransformValue = CctvImage.RenderTransform.Value;
if (e.Delta > 0)
renderTransformValue.ScaleAtPrepend(1.1, 1.1, position.X, position.Y);
else
renderTransformValue.ScaleAtPrepend(1 / 1.1, 1 / 1.1, position.X, position.Y);

CctvImage.RenderTransform = new MatrixTransform(renderTransformValue);
}

这对于放大效果很好,我喜欢放大鼠标在屏幕上的特定位置的功能。

但是,当缩小时,用户可以缩小超过图像占据屏幕的点。这意味着很难回到占据整个窗口的图像原始位置。他们能够达到图像的大部分不在屏幕上或存在大量空白的地步,这是我所描述的示例:

enter image description here

如您所见,图像在屏幕上很小,而我想防止用户将图像缩小到超过图像占据整个窗口的程度。

有什么方法可以实现吗?

最佳答案

如何在之前重置转换并保留您自己的“比例”值,您可以根据“最大比例”和“最小比例”检查该值,如下所示:

    double scale = 1.0;
double minScale = 0.5;
double maxScale = 2.0;

private void image_MouseWheel(object sender, MouseWheelEventArgs e)
{
// back to normal (maybe this isn't needed since we're making a new one below anyway)
CctvImage.RenderTransform = null;

var position = e.MouseDevice.GetPosition(CctvImage);

if (e.Delta > 0)
scale += 0.1;
else
scale -= 0.1;

if (scale > maxScale)
scale = maxScale;
if (scale < minScale)
scale = minScale;

CctvImage.RenderTransform = new ScaleTransform(scale, scale, position.X, position.Y);


}

关于c# - 在 WPF 中放大图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43629642/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com