![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Edd |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 23.3.2006 Репутация: 1 Всего: 1 |
Открываю bmp, рисую его в picturBox.
Вроде всё хорошо, но если на рисунок навести другой обьект или свернуть форму, то ресунок пропадает( стирается). Как эту проблему решить? Ниже приведон код.
Может прорисовку надо подругому реализовать, для устронения проблемы? |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
В данном конкретном случае можно просто установить свойство PictureBox.Image.
А вообще, чтобы избежать затирания, надо обрабатывать событие Paint. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Edd |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 23.3.2006 Репутация: 1 Всего: 1 |
C PictureBox.Image: в смысле на прямую загружать рисунок? Но мне надо будет вырезать куски рисунка.
А как обрабатывать событие Paint? ![]() |
|||
|
||||
Idsa |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
Нее, обрабатывать OnPaint - не дело: для этого нужно хранить координаты всех нарисованных фигур. На мой взгляд, лучше делать вот так:
В этом случае нарисованное тобой не стирается и перерисовкой заниматься не нужно. Делаешь обработчик события Paint в PictureBox:
(делает код то же, что и в примере выше). А вообще, я так и не разобрался во внутренностях этого процесса: почему так по-разному ведут себя рисунки при получении Graphics разными способами. Буду очень благодарен за ссылочки или подробное объяснение. |
||||
|
|||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
В property grid у pictureBox1 на закладке Events надо дважды кликнуть в строке с Paint. -------------------- ![]() |
|||
|
||||
Edd |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 23.3.2006 Репутация: 1 Всего: 1 |
Используя:
затерание пропадает, но этот метод нельзя применять если pictureBox1.Image=null;, А мне надо использовать куски рисунков, которые могут быть разных форматов и в этом pictureBox1 рисовать. П.С. Есть ли возможность к загружонному ресунку ислпользовать Transparent(Прозрачность фонового цвета). |
|||
|
||||
-Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 17 Всего: 59 |
Расскажи что ты вообще делаешь, а то тут предлагают всякого разного, опиши свою задачу, и тебе помогут грамотно реализовать ее. Что ходить вогруг, да около. Лично мне показалось что ты делаешь двумерную игрушку. И я мог бы рассказать как и что лучше сделать с прорисовкой, но вдруг я ошибся, и выйдет что я зря потратил время.
-------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
Edd |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 23.3.2006 Репутация: 1 Всего: 1 |
Делаю следующее: небольшая программка по обработке граффики.
Создаётся массив pictureBox-сов, в эти pictureBox-ы (PB) пользователь грузит картинки, разных размеров и форматов. Хотя не в PB, а в массив Bitmap-ов. PB нужны чтобы с картинками работать: отаброжать, перемещать по форме. Далее, когда всё загружено и раставлено, всё это рисуется в отдельном pictureBox-се с соответствующими координатами. Полученное новое изображение сохраняется. Проблема: Прорисовки всего (всех загруженных картинок) на отдельном pictureBox-се. С загрузкой, размещением и определением какую часть рисунка рисовать, проблем нету. Размеры отдельного pictureBox-а, могут изменятся. Еслибы не менялись, то в отдельном pictureBox-е использовалбы рисунок весь белого цвета нужного мне размера. Мозет для всего этого использовать другую компоненту, вместо pictureBox, или вообще свою создать? |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Уж не проще ли тогда рисовать все битмапы в одном контроле, например на панели ?
-------------------- ![]() |
|||
|
||||
-Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 17 Всего: 59 |
Ну тогда все просто:
Здесь код приведен в стиле "для ознакомления с принципом работы". В конечном коде необходимы различного рода оптимизации. -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |