![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| lioness |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
Два примера. Должны работать одинаково, а почему с Paint не работает
Пример с CreateGraphics (работает)
Кстати, в книге (Chris Sells...) стояло так:
А зачем был using? Я его убрала - разницы не заметила. И другой пример (НЕ работает), хотя должно быть то же самое, только с Paint-ом
И не рисует он ничего. Я попробовала с горя Refresh(). Хотя оба должны бы работать вроде бы как одинаково А OnPaint чем отличается от Paint? Или это один и тот же void для события по прорисовке? |
||||||
|
|||||||
| ivashkanet |
|
||||||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 11 Всего: 149 |
Кроме случая со сворачиванием/разворачиванием и перекрытия нашей формы другой, да? А он уничтожает, вызывает его метод Dispose(), объект, который создается в скобках, сразу после конца блока using. А drawEllipseButton_Paint зарегистрирован как обработчик для события Paint?
После изменения свойств влияющих на рисование нужно вызвать перерисовку контрола:
P.S. Во втором случае все равно будут проблеммы с изменение размеров формы |
||||||
|
|||||||
| lioness |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
Ой, ну, конечно, да Подписка на событие стоИт, она же автоматически ставится дизайнером. Ставила я уже Invalidate и Refresh с горя ставила. Пример, с Paint-ом рисует какой-то крошечный кусочек синевого эллипса и то, если мышкой по форме пробежаться. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
this.CreateGraphics создаёт новый экземпляр Graphics, поэтому его надо освобождать вызовом Dispose, либо заключением в using. В то время как e.Graphics в обработчике события Paint уже содержит существующий объект Graphics, который ещё будет использоваться и освобождаться WinForms после отрисовки - его освобождать не надо.
OnPaint - виртуальный метод, определённый в классе Control, его задача - сгенерировать событие Paint. Этот метод перекрывают для того, чтобы выполнить какие-то действия до или после всех обработчиков события Paint, либо чтобы вовсе запретить отрисовку по какому-либо условию и так далее. По сути, такие методы как OnBlablabla обеспечивают полиморфизм при генерации событий. -------------------- ![]() |
|||
|
||||
| ivashkanet |
|
||||||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 11 Всего: 149 |
lioness, вот твой код 1:1 только добавлен Invalidate(), который работает корректно:
В смысле автоматически? Если нажал(-а) выбрал метод на вкладке событий, то да. P.S.
Да, это я хорошо написал |
||||||
|
|||||||
| lioness |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
Стоит там уже Validate! А Paint рисует только кусочек от эллипса и, действительно, только на кнопке, а не на форме.
По моим понятиям, эти два кода должны делать одинаковую графику, только Paint луччче У меня с Paint-ом давно напряженные отношения. Всякие "резиновые" линии у меня прыгают без подобных выкрутасов. |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 11 Всего: 149 |
||||
|
||||
| lioness |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
Invalidate
Ну, конечно, для кнопки объявила Paint ! Не нарочно, чессно слово Большое русское мерси |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 11 Всего: 149 |
lioness, ну слава богу
Не за что P.S. Небольшое замечание: твой рисовальщик будет глючить при изменении размеров формы. Все потому, что рисунок который был до изменений размера отличается от рисунка после. А так как Paint --- очень хитрый метод, то он рисует только то что изменилось В нашем случае, если мы расширим экран, то он отрисует только ту часть, которая "была добавлена" к форме, считая что старый рисунок соответствует действительности и перерисовывать его не надо. Чтобы этого избежать нужно либо: 1) использовать статический рисунок, либо после каждого изменения размера формы (от него зависит размер эллипса) нужно вызвать Invalidate() форме |
|||
|
||||
| koljan |
|
||||
|
VIP ![]() ![]() Профиль Группа: Участник Сообщений: 430 Регистрация: 18.12.2005 Где: г.Архангельск Репутация: нет Всего: 1 |
люди, извиняйте что в эту тему пишу а не создаю отдельно т.к. вопрос по приведённому выше коду
как только я пишу компилятору не нравится слово partial
у меня ошибку выдаёт вот такую:
|
||||
|
|||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
koljan, потому что фреймворк нужен 2.0, похоже что у тебя 1.1 (студия 2003)
-------------------- ![]() |
|||
|
||||
| koljan |
|
|||
|
VIP ![]() ![]() Профиль Группа: Участник Сообщений: 430 Регистрация: 18.12.2005 Где: г.Архангельск Репутация: нет Всего: 1 |
||||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 11 Всего: 149 |
koljan, с чего же? Но и дружить не будет
Чтобы разрабатывать под второй FW нужна 2005-ая студия |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |