динамически изменяющийся размер изображения в Canvas - PullRequest
0 голосов
/ 23 марта 2012

В настоящее время я создаю программу, которая динамически добавляет изображение в панель 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=80 и myImage2.Width=40 (думал, что это изменит размер в процентах, но, похоже, это не сработает.

Есть идеи?

Спасибо

Ответы [ 2 ]

2 голосов
/ 23 марта 2012

Я думаю, вам лучше использовать другой контейнер, в частности, контейнер UniformGrid будет делать именно то, что вы хотите.

Вот хороший урок: http://www.wpftutorials.com/2011/03/wpf-uniformgrid.html

UPDATE

UniformGrid может отсутствовать в наборе инструментов, но это встроенный примитив, поэтому он у вас есть.

0 голосов
/ 11 мая 2012

Как добавить 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")
...