Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 代码>专用无效btnZoom\U单击(对象发送者,路由目标e) { 列表=新列表(); foreach(gridImageList.Children中的UIElement项) { 边框=(边框)项; Image Image=(Image)border.Child; var imgViewerScaleTransform=(ScaleTransform)(image.layoututtransform); imgViewerScaleTransform.CenterX=0.5; imgViewerScaleTransform.CenterY=0.5; 如果((imgViewerScaleTransform.ScaleX+0.2)>3 | |(imgViewerScaleTransform.ScaleY+0.2)>3) 返回; imgViewerScaleTransform.ScaleX+=0.2; imgViewerScaleTransform.ScaleY+=0.2; image.layoututtransform=imgViewerScaleTransform; border.Child=图像; 列表。添加(边框); } gridImageList.Children.Clear(); foreach(列表中的边框) { gridImageList.Children.Add(边框); } } 私有无效btnZoomOut_单击(对象发送者,路由目标e) { 列表=新列表(); foreach(gridImageList.Children中的UIElement项) { 边框=(边框)项; Image Image=(Image)border.Child; var imgViewerScaleTransform=(ScaleTransform)(image.layoututtransform); imgViewerScaleTransform.CenterX=0.5; imgViewerScaleTransform.CenterY=0.5; if((imgViewerScaleTransform.ScaleX-0.2)_C#_Wpf_Image_Grid_Resize - Fatal编程技术网

C# 代码>专用无效btnZoom\U单击(对象发送者,路由目标e) { 列表=新列表(); foreach(gridImageList.Children中的UIElement项) { 边框=(边框)项; Image Image=(Image)border.Child; var imgViewerScaleTransform=(ScaleTransform)(image.layoututtransform); imgViewerScaleTransform.CenterX=0.5; imgViewerScaleTransform.CenterY=0.5; 如果((imgViewerScaleTransform.ScaleX+0.2)>3 | |(imgViewerScaleTransform.ScaleY+0.2)>3) 返回; imgViewerScaleTransform.ScaleX+=0.2; imgViewerScaleTransform.ScaleY+=0.2; image.layoututtransform=imgViewerScaleTransform; border.Child=图像; 列表。添加(边框); } gridImageList.Children.Clear(); foreach(列表中的边框) { gridImageList.Children.Add(边框); } } 私有无效btnZoomOut_单击(对象发送者,路由目标e) { 列表=新列表(); foreach(gridImageList.Children中的UIElement项) { 边框=(边框)项; Image Image=(Image)border.Child; var imgViewerScaleTransform=(ScaleTransform)(image.layoututtransform); imgViewerScaleTransform.CenterX=0.5; imgViewerScaleTransform.CenterY=0.5; if((imgViewerScaleTransform.ScaleX-0.2)

C# 代码>专用无效btnZoom\U单击(对象发送者,路由目标e) { 列表=新列表(); foreach(gridImageList.Children中的UIElement项) { 边框=(边框)项; Image Image=(Image)border.Child; var imgViewerScaleTransform=(ScaleTransform)(image.layoututtransform); imgViewerScaleTransform.CenterX=0.5; imgViewerScaleTransform.CenterY=0.5; 如果((imgViewerScaleTransform.ScaleX+0.2)>3 | |(imgViewerScaleTransform.ScaleY+0.2)>3) 返回; imgViewerScaleTransform.ScaleX+=0.2; imgViewerScaleTransform.ScaleY+=0.2; image.layoututtransform=imgViewerScaleTransform; border.Child=图像; 列表。添加(边框); } gridImageList.Children.Clear(); foreach(列表中的边框) { gridImageList.Children.Add(边框); } } 私有无效btnZoomOut_单击(对象发送者,路由目标e) { 列表=新列表(); foreach(gridImageList.Children中的UIElement项) { 边框=(边框)项; Image Image=(Image)border.Child; var imgViewerScaleTransform=(ScaleTransform)(image.layoututtransform); imgViewerScaleTransform.CenterX=0.5; imgViewerScaleTransform.CenterY=0.5; if((imgViewerScaleTransform.ScaleX-0.2),c#,wpf,image,grid,resize,C#,Wpf,Image,Grid,Resize,这是ScrollViewer中可伸缩项控件的一个非常简单的版本 它可以在许多方面得到改进。首先,您应该通过将按钮命令属性绑定到视图模型中的ZoomIn和ZoomOut命令来替换处理按钮单击事件(为简洁起见,请省略) 背后的代码: public partial class MainWindow : Window { private readonly ViewModel viewModel = new ViewModel(); public MainWindow() {

这是ScrollViewer中可伸缩项控件的一个非常简单的版本

它可以在许多方面得到改进。首先,您应该通过将按钮命令属性绑定到视图模型中的ZoomIn和ZoomOut命令来替换处理按钮单击事件(为简洁起见,请省略)


背后的代码:

public partial class MainWindow : Window
{
    private readonly ViewModel viewModel = new ViewModel();

    public MainWindow()
    {
        InitializeComponent();
        DataContext = viewModel;

        foreach (string imageFile in Directory.EnumerateFiles(
            @"C:\Users\Public\Pictures\Sample Pictures", "*.jpg"))
        {
            viewModel.Images.Add(new BitmapImage(new Uri(imageFile)));
        }
    }

    private void ZoomInButtonClick(object sender, RoutedEventArgs e)
    {
        viewModel.Scale *= 1.1;
    }

    private void ZoomOutButtonClick(object sender, RoutedEventArgs e)
    {
        viewModel.Scale /= 1.1;
    }
}

public class ViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public ObservableCollection<ImageSource> Images { get; }
        = new ObservableCollection<ImageSource>();

    private double scale = 1;

    public double Scale
    {
        get { return scale; }
        set
        {
            scale = value;
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Scale)));
        }
    }
}
公共部分类主窗口:窗口
{
private readonly ViewModel ViewModel=new ViewModel();
公共主窗口()
{
初始化组件();
DataContext=viewModel;
foreach(目录中的字符串imageFile.EnumerateFiles(
@“C:\Users\Public\Pictures\Sample Pictures”,“*.jpg”))
{
添加(新的位图图像(新的Uri(图像文件));
}
}
private void ZoomInButtonClick(对象发送方,路由目标)
{
viewModel.Scale*=1.1;
}
私有void ZoomOutButtonClick(对象发送方,RoutedEventTarget e)
{
viewModel.Scale/=1.1;
}
}
公共类视图模型:INotifyPropertyChanged
{
公共事件属性更改事件处理程序属性更改;
公共可见收集映像{get;}
=新的ObservableCollection();
私人双标度=1;
公共双尺度
{
获取{返回比例;}
设置
{
刻度=数值;
PropertyChanged?.Invoke(这是新的PropertyChangedEventArgs(nameof(Scale));
}
}
}

要同时缩放所有图像吗?这是可以接受的。我有很长的垂直图像线,我可以上下滚动,所以用户应该能够缩放图像/所有图像。我想效果是一样的。图像查看器的格式发生了变化,所以我搜索了如何缩放栅格元素,但没有找到任何解决方案。谢谢你的时间!不知道什么是可接受的。你的实际目标是什么?如果要缩放单个选定的图像,则应使用列表框(因为它支持选择)并仅缩放选定的图像。也许,应更改我的解决方案。我的目标是创建一个垂直的图像集合,您可以使用滚动条从第一个图像向上/向下滚动到最后一个图像。我有一个按钮,可以缩放整行图像,所以用户可以滚动缩放的图像。当您移动滚动条和PDF页面滚动时,它的工作原理应该与Adobe Acrobat(非广告)中的工作原理相同。如果您需要更多详细信息,请询问。提前谢谢。那你为什么不在ScrollViewer中使用ListBox或者ItemsControl呢?为什么使用StackPanel时网格会简单得多?或者一个列数为1的UniformGrid,以防所有图像大小相同。天哪,你写得这么快,真令人印象深刻!非常感谢您抽出时间,这将帮助我改进代码)多亏了XAML和MVVM,事实上代码并不多。了解这一事实和能够编写工作代码是两码事。我知道这会更好,但我仍然没有使用MVVM和所有XAML功能创建正确的工作代码。所以再次感谢你,你的解决方案真的帮助我理解了,这应该怎么做,在我看来很优雅。我将使用这段代码,并尝试添加图像的旋转。如果所有图像的旋转相同,请将旋转变换应用于图像(或边框)的渲染或布局变换,并通过
Angle={Binding DataContext.RotationAngle,RelativeSource={RelativeSource AncestorType=ItemsControl}
绑定到另一个视图模型属性。
public partial class MainWindow : Window
{
    private readonly ViewModel viewModel = new ViewModel();

    public MainWindow()
    {
        InitializeComponent();
        DataContext = viewModel;

        foreach (string imageFile in Directory.EnumerateFiles(
            @"C:\Users\Public\Pictures\Sample Pictures", "*.jpg"))
        {
            viewModel.Images.Add(new BitmapImage(new Uri(imageFile)));
        }
    }

    private void ZoomInButtonClick(object sender, RoutedEventArgs e)
    {
        viewModel.Scale *= 1.1;
    }

    private void ZoomOutButtonClick(object sender, RoutedEventArgs e)
    {
        viewModel.Scale /= 1.1;
    }
}

public class ViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public ObservableCollection<ImageSource> Images { get; }
        = new ObservableCollection<ImageSource>();

    private double scale = 1;

    public double Scale
    {
        get { return scale; }
        set
        {
            scale = value;
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Scale)));
        }
    }
}