| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Затерается рисунок (С#) |
| Автор: Edd 4.3.2007, 20:43 | ||
| Открываю bmp, рисую его в picturBox. Вроде всё хорошо, но если на рисунок навести другой обьект или свернуть форму, то ресунок пропадает( стирается). Как эту проблему решить? Ниже приведон код.
Может прорисовку надо подругому реализовать, для устронения проблемы? |
| Автор: Void 4.3.2007, 20:54 |
| В данном конкретном случае можно просто установить свойство PictureBox.Image. А вообще, чтобы избежать затирания, надо обрабатывать событие Paint. |
| Автор: Edd 4.3.2007, 21:24 |
| C PictureBox.Image: в смысле на прямую загружать рисунок? Но мне надо будет вырезать куски рисунка. А как обрабатывать событие Paint? |
| Автор: Idsa 4.3.2007, 22:05 | ||||
Нее, обрабатывать OnPaint - не дело: для этого нужно хранить координаты всех нарисованных фигур. На мой взгляд, лучше делать вот так:
В этом случае нарисованное тобой не стирается и перерисовкой заниматься не нужно. Делаешь обработчик события Paint в PictureBox:
(делает код то же, что и в примере выше). А вообще, я так и не разобрался во внутренностях этого процесса: почему так по-разному ведут себя рисунки при получении Graphics разными способами. Буду очень благодарен за ссылочки или подробное объяснение. |
| Автор: mr.DUDA 4.3.2007, 22:12 |
В property grid у pictureBox1 на закладке Events надо дважды кликнуть в строке с Paint. |
| Автор: Edd 5.3.2007, 16:25 | ||
Используя:
затерание пропадает, но этот метод нельзя применять если pictureBox1.Image=null;, А мне надо использовать куски рисунков, которые могут быть разных форматов и в этом pictureBox1 рисовать. П.С. Есть ли возможность к загружонному ресунку ислпользовать Transparent(Прозрачность фонового цвета). |
| Автор: -Mikle- 6.3.2007, 14:50 |
| Расскажи что ты вообще делаешь, а то тут предлагают всякого разного, опиши свою задачу, и тебе помогут грамотно реализовать ее. Что ходить вогруг, да около. Лично мне показалось что ты делаешь двумерную игрушку. И я мог бы рассказать как и что лучше сделать с прорисовкой, но вдруг я ошибся, и выйдет что я зря потратил время. |
| Автор: Edd 8.3.2007, 18:05 |
| Делаю следующее: небольшая программка по обработке граффики. Создаётся массив pictureBox-сов, в эти pictureBox-ы (PB) пользователь грузит картинки, разных размеров и форматов. Хотя не в PB, а в массив Bitmap-ов. PB нужны чтобы с картинками работать: отаброжать, перемещать по форме. Далее, когда всё загружено и раставлено, всё это рисуется в отдельном pictureBox-се с соответствующими координатами. Полученное новое изображение сохраняется. Проблема: Прорисовки всего (всех загруженных картинок) на отдельном pictureBox-се. С загрузкой, размещением и определением какую часть рисунка рисовать, проблем нету. Размеры отдельного pictureBox-а, могут изменятся. Еслибы не менялись, то в отдельном pictureBox-е использовалбы рисунок весь белого цвета нужного мне размера. Мозет для всего этого использовать другую компоненту, вместо pictureBox, или вообще свою создать? |
| Автор: mr.DUDA 9.3.2007, 12:23 |
| Уж не проще ли тогда рисовать все битмапы в одном контроле, например на панели ? |
| Автор: -Mikle- 9.3.2007, 16:15 | ||
Ну тогда все просто:
Здесь код приведен в стиле "для ознакомления с принципом работы". В конечном коде необходимы различного рода оптимизации. |