Восстановление изображения
От: Аноним  
Дата: 12.05.05 13:39
Оценка: 1 (1)
У меня есть объект Graphics (форма) с большим рисунком на фоне (читай — рабочий стол с обоями) там же обрисовываются полупрозрачные прямоугольники. При наведении они меняют цвет. Как можно сохранить кусок фона для конкретного прямоугольника, чтобы восстанавливать его при обрисовке заново? Перерисовывать всю картинку гиморно — слишком долго.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: Восстановление изображения
От: Rexx Россия  
Дата: 13.05.05 17:54
Оценка: +1
Здравствуйте, in2dark, Вы писали:

I>А если прорисовка фонапроисходит в коде и у меня нет ничего кроме объекта Graphics? Тоесть я нарисовал на форме сложный рисунок кодом, а потом в определённом месте дорисовал объект GraphicsPath со сложной внутренней структурой, как мне его убрать и вернуть начальную кактинку без перерисовки всего изображения? Мне надо сохранить содержимое области под этим объектом и позже вернуть его обратно.


Ну тогда воспользуйся функцией WinApi BitBlt

Тут примерно описано как получить из Graphics нарисованное на нем изображение.
смотри тут

Перед выводом твоего GraphicsPath снимаешь с той части формы изображение, а дальше, когда нужно восстановить фоновый рисунок — просто восстанавливаешь его на место из памяти. Как восстановить я написал выше, просто тебе уже не надо загружать рисунок, он будет в памяти.
Короче сложности составить не должно.

P.S. Ну а если не получиться, тогда напишу тебе пример. А вообще всё это есть в форумах, надо только поискать и немного подумать.
Re: Восстановление изображения
От: nzeemin Россия http://nzeemin.livejournal.com/
Дата: 12.05.05 13:48
Оценка:
Как я понимаю, полупрозрачные окна в WinXP и выше поддерживаются самой системой. Почему бы не использовать имеющиеся возможности?
Re: Восстановление изображения
От: Аноним  
Дата: 12.05.05 14:17
Оценка:
мне не окно нудно сделать полупрозрачным, а прямоугольник в нём. Тоесть фон у меня — это фон окна формы


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Восстановление изображения
От: Аноним  
Дата: 12.05.05 16:12
Оценка:
Вроде можно было выводить картинку по частям, а еще делать Invalidate не всему окну, а только прямоугольнику


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Восстановление изображения
От: Аноним  
Дата: 13.05.05 05:44
Оценка:
Кодом поделитесь.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Восстановление изображения
От: Rexx Россия  
Дата: 13.05.05 08:09
Оценка:
Здравствуйте, in2dark, Вы писали:

I>У меня есть объект Graphics (форма) с большим рисунком на фоне (читай — рабочий стол с обоями) там же обрисовываются полупрозрачные прямоугольники. При наведении они меняют цвет. Как можно сохранить кусок фона для конкретного прямоугольника, чтобы восстанавливать его при обрисовке заново? Перерисовывать всю картинку гиморно — слишком долго.


I>
данное сообщение получено с www.gotdotnet.ru

I>ссылка на оригинальное сообщение


Вывод части Image на форму:

//Загружаем картинку из файла.
Image image = Image.FromFile("1.jpg");

// Создаем объект Graphics для формы.
Graphics grfx = this.CreateGraphics();

// Получаем нужную часть изображения
Rectangle rect = new Rectangle(0, 120, 120, 240);

//Указываем нужные координаты на форме.
Rectangle rect2 = new Rectangle(0, 0, 120, 240);

//Выводим часть изображения в нужные координаты на форме.
grfx.DrawImage(image,rect2,rect, GraphicsUnit.Pixel);
Re: Восстановление изображения
От: Аноним  
Дата: 13.05.05 11:51
Оценка:
А если прорисовка фонапроисходит в коде и у меня нет ничего кроме объекта Graphics? Тоесть я нарисовал на форме сложный рисунок кодом, а потом в определённом месте дорисовал объект GraphicsPath со сложной внутренней структурой, как мне его убрать и вернуть начальную кактинку без перерисовки всего изображения? Мне надо сохранить содержимое области под этим объектом и позже вернуть его обратно.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.