Сохранения внещнего вида контрола.
Возникла проблема. Есть некий контрол с прозрачностью, требуется сохранить вид этого контрола в image или bitmap, не теряя прозрачность (те что бы сохраненная картинка содержала альфа компоненту контрола). Жедательно без выхода в Unsafe{}. Заранее спасибо.
Bitmap b = new Bitmap(100, 100);
button1.DrawToBitmap(b,
new Rectangle(0, 0, 100, 100));
pictureBox1.Image = b;
Сначала создаём битовую карту рисунка размером 100X100. button1 - обычная кнопка, вызываем метод DrawToBitmap и рендерим её в нашу битовую карту. Далее в контрол pictureBox1 размещаем битовую карту, которая содержит прорисовку кнопки. Если что-то непонятно, могу выслать полностью солюшн с этим примером.
Цитата:
Originally posted by 3A3-968M
Используем GDI+ метод для рендеринга твоего контрола:
Bitmap b = new Bitmap(100, 100);
button1.DrawToBitmap(b,
new Rectangle(0, 0, 100, 100));
pictureBox1.Image = b;
Сначала создаём битовую карту рисунка размером 100X100. button1 - обычная кнопка, вызываем метод DrawToBitmap и рендерим её в нашу битовую карту. Далее в контрол pictureBox1 размещаем битовую карту, которая содержит прорисовку кнопки. Если что-то непонятно, могу выслать полностью солюшн с этим примером.
Используем GDI+ метод для рендеринга твоего контрола:
Bitmap b = new Bitmap(100, 100);
button1.DrawToBitmap(b,
new Rectangle(0, 0, 100, 100));
pictureBox1.Image = b;
Сначала создаём битовую карту рисунка размером 100X100. button1 - обычная кнопка, вызываем метод DrawToBitmap и рендерим её в нашу битовую карту. Далее в контрол pictureBox1 размещаем битовую карту, которая содержит прорисовку кнопки. Если что-то непонятно, могу выслать полностью солюшн с этим примером.
Может я чего не понял, но этот способ в Bitmap сохраняет и изображение под контролом. Мне нужна картинка с прозрачностью, для того что бы имитировать контрол. И без загрузки системы на перерисоввывание эмулировать перетаскивание. Те эта картинка прозрачно накладывалась на фон под ней не обязательно в том же месте где была снята.
Вообще я думал вызывать OnPaint(e), где e.Graphics = Graphics.FromImage(image) (image - то, куда я сохраняю), но при этом перерисовывется только сам контрол, а нужно что бы еще и дочернии эл-ты перерисовывались. Может кто подскажет как таким путем довести до желаемого результата.
Тогда рекомендую тему "Layered Windows: A New Way to Use Translucency and Transparency Effects in Windows Applications" по ссылке