Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Control to bitmap


Автор: Skalik 1.8.2011, 19:23
как сохранить контрол в Bitmap, если он еще ни разу не отображался на форме. Тоесть этот контрол отображать вообще не нужно, нужно просто получить его изображение!

Пытаюсь сделать это так:
Код

RenderTargetBitmap bmp = new RenderTargetBitmap((int)(boardWidth + spaceWidth / 2), (int)(boardHeight + spaceHeight / 2), 96, 96, PixelFormats.Pbgra32);
bmp.Render(MyControl);



Если контрол уже отображался на форме, то все ок, а если нет то сохраняет в черный квадрат!!

Автор: Skalik 5.8.2011, 17:17
я не могу поверить, что никто и никогда не сталкивался с такой проблемой?? Нужно просто сохранить контрол как картинку... (ну насколько я понял не особо это и просто  smile )

Автор: Gvozdin 9.8.2011, 16:05
Вот мой код, который делает следующее:
1. Изменяет визуальное состояние контрола для того что бы он переключился в режим для экспорта
2. Делает контролу Measure и Arrange что бы все перерисовалось
3. Делает экспорт через RenderTargetBitmap

Все это делается через очередь диспетчера, некрасиво но работает. Надо бы переделать с итераторами(а ля Async CTP)

Единственное мой контрол все же в визуальном дереве присутствует, но мне кажется что он сработает и без этого.

Вот кусок моего кода http://codepaste.net/min3ar

А вот нашел статью как это делать http://code.cheesydesign.com/?p=629
собственно так же как у меня надо дернуть Measure и Arrange

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