Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > WPF Изображения\Работа с памятью


Автор: Maxidrom 26.8.2009, 10:52
Привет ребят. Делаю программу на WPF, она будет работать с изображениями... но вот к сожалению памяти жрет не мало, например, 75 изображений в одном окне, разрешением в среднем 1024х768 (разрешение изображений это, не экрана, JPG или PNG в основном), общим размером 30мб, в оперативной памяти занимают 500мб (Понятно что он их всех в bmp перегнал). Меня вот смущает сам процесс вывода:
Код

BitmapImage bitmap = new BitmapImage();

bitmap.BeginInit();
bitmap.UriSource   = new Uri(file, UriKind.Relative);
// !!! bitmap.CacheOption = BitmapCacheOption.OnLoad; !!!
bitmap.EndInit();

Image image = new Image();      

image.Stretch = Stretch.Fill;
image.Source  = bitmap;

image.RenderTransform = new RotateTransform(rnd.Next(0, 10) - rnd.Next(0, 10), image.Width / 2, image.Height / 2);

Window.Grid.Children.Add(image);

Особенно строчка, которую я выделил, без нее изображений просто не видно на форме... надыбал это я на форумах MSDN, может есть лучшее решение? А то может он вывел и все в кеше держит... 

Все из-за BitmapCacheOption.OnLoad, но если ставить BitmapCacheOption.None, то на форме изображения не появляются, хотя в MSDN написано что BitmapCacheOption.None обращается к файлу при перерисовке напрямую, и действительно если попытаться перименовать файл когда прога работает то ОС говорит что он занят, когда OnLoad не занят, но почему же их тогда не видно на форме...

Вобщем как вывести изображение в Image не кешируя его? Заранее спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)