![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Вот непомню что нужно сделать.. подскажите плиз буду очень признателен.
-------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
Смотря что рисовать...
А вообще методы TCanvas - там всё написано. |
|||
|
||||
| S.A.G. |
|
||||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Вообще будет ли оно рисовать? Что-то неполучаеться..
Потом например:
Ничего не рисует. Может на этом компоненте нельзя или я что-то не так делаю? Добавлено через 8 минут и 17 секунд В dc ничего нет.., 0.. Это сообщение отредактировал(а) S.A.G. - 18.4.2007, 17:04 -------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
||||
|
|||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
Canvas.Handle это и есть DC
Прям его и подставляй туда, где нужен DC, или так:
Добавлено через 4 минуты и 37 секунд Естественно. GetDC тут вообще не нужно - оно нужно, когда у тебя хэндл окна. А в данном случае никакого хэндла окна нет. Потому GetDC и возвращает ошибку - ты скормил ему не окно. Зато есть уже готовый DC. Его и юзать. |
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Добавлено @ 17:24 Гм, я рисую квадрат в обработчике события - перерисовка пейнтбокса. Оно сразу не рисует а рисует буквально через раз или через два когда заставляю окно перерисоваться.. Незнаешь как с этим бороться? Это сообщение отредактировал(а) S.A.G. - 18.4.2007, 17:25 -------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
0 - это и есть ошибка.
Расшифровка ошибки - GetLastError. Естественно. Ведь событие перерисовки происходит по необходимости, а не когда этого тебе хочется. Если очень хочется раньше - вызывай Invalidate (Repaint). Но только не из кода метода перерисовки. Добавлено через 7 минут и 9 секунд Вот тестовый пример. Прекрасно работает:
|
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Но ведь после создания компонент сразу перерисовываеться следовательно должен нарисоваться сразу и прямоугольник. Я разобрался в чем дело - ссылка в dc присваивалась при создании формы т.е. в событии OnCreate формы. Тогда наверное еще не был создан компонент пейнтбокс чтобы получить на него ссылку или что-то в этом духе. Вобщем при присвоении сразу перед рисованием все работает четко. Это сообщение отредактировал(а) S.A.G. - 18.4.2007, 17:43 -------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
Просто DC может меняться.
Поэтому нужно брать его непосредственно перед отрисовкой. |
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
А если я рисую из объекта который находиться в другом модуле я не имею возможности постоянно обновлять эту ссылку. Как же тогда быть? Или dc меняеться только когда перерисовываеться пейнтбокс?
-------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
Когда он меняется? Неисповедимы пути VCL'я
Если рисуешь в другом модуле - передавай ему DC параметром процедуры. |
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
в классе рисуют private методы
-------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
Ну дай ему не DC, а сам Canvas.
Пусть из него DC достаёт. |
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Попробую
-------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
![]()
|
| Правила форума "Delphi: Звук, графика и видео" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |