在Canvas中动态更改图像大小

时间:2012-03-23 19:25:51

标签: c# wpf image resize

我目前正在创建一个程序,每次用户按下按钮时,都会动态地将Image添加到dockPanel。我想知道如何才能得到它,以便每次用户将另一个图像添加到dockPanel时,图像会缩小,以便它们都具有相同的尺寸并适合dockPanel。

这是我目前的代码:

 Uri myUri = new Uri(@"C:\Users\Jim\Desktop\Project\bin\Debug\pic.bmp", UriKind.RelativeOrAbsolute);
            BmpBitmapDecoder decoder2 = new BmpBitmapDecoder(myUri, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
            BitmapSource bitmapSource2 = decoder2.Frames[0];
        // Draw the Image
        Image myImage2 = new Image();
        myImage2.Source = bitmapSource2;
        myImage2.Stretch = Stretch.None;
        myImage2.Margin = new Thickness(20);
        dockPanel1.Children.Add(myImage2);

我尝试过myImage2.Height=80myImage2.Width=40(认为它会通过百分比改变大小,但似乎没有这样做。

任何想法?

由于

2 个答案:

答案 0 :(得分:2)

我认为使用不同的容器可以提供更好的服务,特别是UniformGrid容器可以完全按照您的需要进行操作。

这是一个很好的教程:http://www.wpftutorials.com/2011/03/wpf-uniformgrid.html

<强>更新

UniformGrid可能不在工具箱中,但它是一个内置的原语,所以你确实拥有它。

答案 1 :(得分:0)

如何将UniformGrid添加到工具箱

- In your toolbox, right-click the header "All WPF Controls"

- Click "Choose Items..."

- Select the "WPF Components" tab

- Scroll down to "UniformGrid"

- Click the checkbox so it's checked

- Click "Ok"

- In your toolbox, drag and drop the new UniformGrid control so it's placed in the correct position alphabetically (on mine, it's between "Treeview" and "Viewbox")