| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Как рисовать в координатах PaintBox'а |
| Автор: S.A.G. 18.4.2007, 15:22 |
| Вот непомню что нужно сделать.. подскажите плиз буду очень признателен. |
| Автор: Snowy 18.4.2007, 16:52 |
| Смотря что рисовать... А вообще методы TCanvas - там всё написано. |
| Автор: S.A.G. 18.4.2007, 17:00 | ||||
Вообще будет ли оно рисовать? Что-то неполучаеться..
Потом например:
Ничего не рисует. Может на этом компоненте нельзя или я что-то не так делаю? Добавлено через 8 минут и 17 секунд В dc ничего нет.., 0.. |
| Автор: Snowy 18.4.2007, 17:09 | ||
| Canvas.Handle это и есть DC Прям его и подставляй туда, где нужен DC, или так:
Добавлено через 4 минуты и 37 секунд Естественно. GetDC тут вообще не нужно - оно нужно, когда у тебя хэндл окна. А в данном случае никакого хэндла окна нет. Потому GetDC и возвращает ошибку - ты скормил ему не окно. Зато есть уже готовый DC. Его и юзать. |
| Автор: S.A.G. 18.4.2007, 17:20 | ||
Добавлено @ 17:24 Гм, я рисую квадрат в обработчике события - перерисовка пейнтбокса. Оно сразу не рисует а рисует буквально через раз или через два когда заставляю окно перерисоваться.. Незнаешь как с этим бороться? |
| Автор: S.A.G. 18.4.2007, 17:38 | ||
Но ведь после создания компонент сразу перерисовываеться следовательно должен нарисоваться сразу и прямоугольник. Я разобрался в чем дело - ссылка в dc присваивалась при создании формы т.е. в событии OnCreate формы. Тогда наверное еще не был создан компонент пейнтбокс чтобы получить на него ссылку или что-то в этом духе. Вобщем при присвоении сразу перед рисованием все работает четко. |
| Автор: Snowy 18.4.2007, 17:45 |
| Просто DC может меняться. Поэтому нужно брать его непосредственно перед отрисовкой. |
| Автор: S.A.G. 18.4.2007, 17:55 |
| А если я рисую из объекта который находиться в другом модуле я не имею возможности постоянно обновлять эту ссылку. Как же тогда быть? Или dc меняеться только когда перерисовываеться пейнтбокс? |
| Автор: Snowy 18.4.2007, 18:05 |
| Когда он меняется? Неисповедимы пути VCL'я Если рисуешь в другом модуле - передавай ему DC параметром процедуры. |
| Автор: S.A.G. 18.4.2007, 18:06 |
| в классе рисуют private методы |
| Автор: Snowy 18.4.2007, 18:11 |
| Ну дай ему не DC, а сам Canvas. Пусть из него DC достаёт. |
| Автор: S.A.G. 18.4.2007, 18:16 |
| Попробую |