| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [C#]Work with PictureBox |
| Автор: newbie2009 4.1.2010, 21:55 |
| Если не сложно то расскажите как делать следующее: Есть форма. В ней есть контрол PictureBox В нем надо: 1. Добавлять кружочки с надписями ( 1, 2, 3 ...) 2. Удалять кружочки с надписями 3. Возможность перемещать кружочки без мерцания.... Хотя бы первые 2 пункта помогите плиз.... |
| Автор: mr.Anderson 4.1.2010, 22:02 | ||
Кружочки придется где-то хранить, заведи список (List) твоих кружков. У кружков придется знать координаты только. Т.е. это будет список List<Point>. Рисовать примерно так:
|
| Автор: newbie2009 4.1.2010, 22:46 | ||||||
Почему, например, посл. нажатия 20 раз мышкой, все кружки исчезают? И как быть с удалением и перетягиванием, и с мерцанием? |
| Автор: mr.Anderson 5.1.2010, 00:00 |
| С мерцанием просто - заведи буфер в памяти (Bitmap), рисуй на нем, а уже после рисования выводи его на канву реального пикчербокса. С удалением - ну заведи кнопку, которая удалять будет определенный кружок. Список кружков сделай в GUI, тут места для фантазии много. Пусть удаляется кружок, который юзер выделит в их списке. Удаление вещь нехитрая - выброси его из списка List и все. А потом перерисовку сразу делай (рисуй все кружки, как сейчас у тебя). Чтобы избежать пропадания при таскании формы и при изменении ее размеров - в соответствующие события поставь перерисовку свою. Добавлено через 4 минуты и 48 секунд ЗЫ перемещение без мерцания делается аналогично через второй буфер. Добавлено через 4 минуты и 59 секунд ЗЗЫ через тот же самый буфер, конечно же, три штуки заводить незачем. |
| Автор: newbie2009 5.1.2010, 00:12 |
| Если не сложно, то можно какой-то пример с Bitmap ? И как насильно вызвать перерисовку? |
| Автор: mr.Anderson 5.1.2010, 11:56 | ||
Да ничего сложного с битмапом. В классе формы заведи приватный битмап. Создай отдельную функцию перерисовки. Получи точно так же его Graphics в этой функции. На этом графиксе рисуй то, что тебе надо. А после окончания этих рисований попросту получи графикс твоего пикчербокса и отрисуй на нем через DrawImage() твой битмап. Все. Из битмапа графикс получать так:
|
| Автор: newbie2009 6.1.2010, 14:22 | ||
| Спасибо за помощь! Только немного ошиблись. Пишу как надо, может кто-то будет испол...
|
| Автор: mr.Anderson 6.1.2010, 19:37 |
| А, ну да, разумеется. Очепяток. |