@Jnas
Программист

Как открыть и масштабировать изображение BitmapImage?

Здравствуйте,
только начал программировать, прошу помощи, никак не разобраться как можно масштабировать изображение двумя пальцами, как и при открытии изображении в альбомах?

Более подробнее имеется код
<ListView Grid.Row="0" Margin="19,0,0,0" x:Name="MyPanel"  IsItemClickEnabled="True" ItemClick="ItemView_ItemClick">
            
            <TextBlock x:Uid="Header" Text="My" Style="{ThemeResource TitleTextBlockStyle}" Margin="0,12,0,0"/>
            <TextBlock Text="{Binding Title}" Style="{ThemeResource BaseTextBlockStyle}" Margin="0,10,0,0" CharacterSpacing="{ThemeResource PivotHeaderItemCharacterSpacing}" />
            <TextBlock x:Name="mtext" Style="{ThemeResource BaseTextBlockStyle}"/>
            
        </ListView>


в С#
private void PanelAddImage(string img) {
            count++;
            string G = "img" + count.ToString();
            BitmapImage I = new BitmapImage(new Uri(img, UriKind.Absolute));
            MyPanel.Items.Add(new Image { Name = G, Source = I});
        }

то есть с помощью PanelAddImage добавляю в ListView изображение
и дальше планировал, чтоб по клику изображения как то оно открывалось чтоли, ну чтоб можно было масштабировать изображение, вот не могу понять, как данную функцию реализовать "открывания" изображения с масштабированием,
пробовал сделать через WebView по клику изображению. но увы ничего не получилось...

Прошу помощи, куда копать ?
  • Вопрос задан
  • 3064 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Sterk
Программист
у BitmapImage есть DecodePixelWidth, DecodePixelHeight размер для конвертации.
var uri = value as string;
            if (string.IsNullOrWhiteSpace(uri))
                return null;
            var image = new BitmapImage();
            image.BeginInit();
            image.UriSource = new Uri(uri);
            if (Width != null)
                image.DecodePixelWidth = (int)Width;
            if (Height != null)
                image.DecodePixelHeight = (int)Height;
            image.EndInit();
            return image;

Либо можно задавать размер контролу, а не источнику, мне кажется это ваш случай.
var uri = value as string;
            if (string.IsNullOrWhiteSpace(uri))
                return null;
            var source = new BitmapImage(new Uri(uri));
            var image = new Image { Source = source };
            if (Width != null)
                image.Width = (int)Width;
            if (Height != null)
                image.Height = (int)Height;
            return image;

Делаете обработку клика и меняете размер у контрола.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы