gpt4 book ai didi

c# - 使用 c# wpf 放大 imageView 图像

转载 作者:太空宇宙 更新时间:2023-11-03 22:37:14 25 4
gpt4 key购买 nike

我正在尝试制作一个窗口,其中包含用于加载图像文件的“浏览”按钮和用于放大图像的按钮“+”。浏览按钮及其打开的对话框成功地将图像加载到 Image aka 中。当我按下“+”按钮时,它不会放大加载的图像而是模糊它。怎么了?

原始加载的图像被命名为 OriginalSizedImage。放大后的图像命名为

private void ZoomInButton_Click(object sender, RoutedEventArgs e)
{
BitmapImage newZoomedInImage = new BitmapImage();
newZoomedInImage.BeginInit();
newZoomedInImage.DecodePixelWidth = originalSizedImage.DecodePixelWidth + 20 ;
newZoomedInImage.DecodePixelHeight = originalSizedImage.DecodePixelHeight + 20;
newZoomedInImage.UriSource = originalSizedImage.UriSource;
newZoomedInImage.EndInit();
imageView.Source = newZoomedInImage ;
}

最佳答案

每次更改缩放系数时都创建一个新的 BitmapImage 是不必要且低效的。

最好将 Image 元素放在对其进行剪辑的父元素中

<Grid ClipToBounds="True">
<Image x:Name="imageView" RenderTransformOrigin="0.5,0.5">
<Image.RenderTransform>
<ScaleTransform/>
</Image.RenderTransform>
</Image>
</Grid>

然后修改分配给它的 RenderTransformScaleTransform(也许还有它的 RenderTransformOrigin):

private void ZoomInButtonClick(object sender, RoutedEventArgs e)
{
var transform = (ScaleTransform)imageView.RenderTransform;
transform.ScaleX *= 1.1;
transform.ScaleY *= 1.1;
}

private void ZoomOutButtonClick(object sender, RoutedEventArgs e)
{
var transform = (ScaleTransform)imageView.RenderTransform;
transform.ScaleX /= 1.1;
transform.ScaleY /= 1.1;
}

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

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