2017-02-12 5 views
0

У меня есть небольшое приложение, которое UWP нагрузить же изображение двумя способами:Сглаживание изображений в UWP приложение

 var folder = Package.Current.InstalledLocation; 
     var file = await folder.GetFileAsync("TestImage.png"); 

     var bitmapImage1 = new BitmapImage(); 
     using (var stream = await file.OpenAsync(FileAccessMode.Read)) 
     { 
      await bitmapImage1.SetSourceAsync(stream); 
     } 

     var bitmapImage2 = new BitmapImage(new Uri(BaseUri, "TestImage.png")); 

     _image.Source = bitmapImage1; 
     //_image.Source = bitmapImage2; 

Проблема заключается в том, что управление Изображение показывает то же изображение по-разному. Для изображения bitmapImage1 изображение не сглаживается, но для bitmapImage2 все в порядке. How it looks like. Мне нужно сделать некоторые манипуляции с изображением перед показом (изменить некоторые пиксели), но после этого мне также нужно сгладить изображение. Не могли бы вы мне помочь?

Я также использовал WriteableBitmap, чтобы изменить некоторые пиксели и иметь одинаковый результат (не сглаженный). Похоже, мне нужно сказать управлению изображением, как это сделать.

Вот link to project для получения дополнительной информации

ответ

0

У меня есть решение в другом потоке. Если изменение порядка строк кода помогает:

var folder = Package.Current.InstalledLocation; 
    var file = await folder.GetFileAsync("TestImage.png"); 

    var bitmapImage1 = new BitmapImage(); 
    _image.Source = bitmapImage1; 

    using (var stream = await file.OpenAsync(FileAccessMode.Read)) 
    { 
     await bitmapImage1.SetSourceAsync(stream); 
    } 

Таким образом, мы должны назначить источник изображения и чем набор исходного потока в Bitmap.

Похоже, управление изображениями декодирует изображение довольно гибко, так что оно может удовлетворить размер acutal UI. Если вы сначала установите BitmapImage в Image.Source, изображение должно быть правильно сглажено, как и второе.

0

я проверил код на моей стороне. И вы обнаружите, что если вы не установите свойства Height и Width для управления изображением, картинки будут выглядеть одинаково. Таким образом, причина для одного выглядит гладко, но другое выглядит не так, как управление изображением масштабирует изображение. Без масштабирования изображение не будет выглядеть иначе. Я предполагаю, что это может быть проведено, но разница между векторным и растровым изображением.

Вы должны быть в состоянии решить эту проблему, создав плавное изображение с размером, которое вы просто хотите показать в приложении, и установите для управления изображением одинаковые размеры с изображением или без настроек Height и Width может быть разрешено.

Мой результат:

enter image description here

+0

Спасибо за ваш ответ. К сожалению, я не понял вас правильно или это не решение для моего дела. Мне нужно масштабировать изображение, поскольку нужно иметь какой-то Image Viewer с возможностью изменять изображение, поэтому у пользователя должна быть возможность видеть изображение в другом масштабе. Вот архив для всего проекта - https://1drv.ms/u/s!AhoyshE1vPPFhJxciMBB45F5sRQdDw – Lubch

Смежные вопросы