OlegK |
Отправлено: 24.04.2005, 20:03 |
|
Не зарегистрирован
|
Здравствуйте! Я пишу графический редактор. Как основу для рисования использую компонент Image. При добавлении новых элементов чертежа: линий, полигонов и тд
мигает все нарисованное ранее изображение, т.е., как я понимаю оно перерисовывается. Как избавиться от этого неприятного эффекта? Может лучше использовать другой, более подходящий для редактора компонент?
Заране благодарен за любой совет!!! |
|
Sl@Sh |
Отправлено: 24.04.2005, 20:54 |
|
Мастер участка
Группа: Участник
Сообщений: 383
|
Этот вопрос уже где-то описывался, но на всякий случай :
DoubleBuffered = true;
DoubleBufferd — свойство формы. В true рекомендую ставить только на момент прорисовки.
Удачи !
Отредактировано Sl@Sh — 24/04/2005, 20:55
|
|
OlegK |
Отправлено: 24.04.2005, 21:04 |
|
Не зарегистрирован
|
Спасибо, сейчас попробую!
Но хочу спросить еще вот о чем: почитав сообщения форума, обратил вниманее, что советуют использовать GDI для рисования , а не методы TImage. В этом случае на чем рисовать средсвами GDI, все на томже Image или на другом компоненте?
|
|
FataLL |
Отправлено: 25.04.2005, 04:56 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 37
|
Можно рисовать на любом контексте (см. CreateDC, CreateCompatibleDC), а потом присваивать этот контекст компоненту. Или копировать его.
|
|
Sl@Sh |
Отправлено: 25.04.2005, 13:53 |
|
Мастер участка
Группа: Участник
Сообщений: 383
|
QUOTE |
В этом случае на чем рисовать средсвами GDI, все на томже Image или на другом компоненте?
|
Рисовать можно и на TImage, но вот о каих конкретно методах вы говорите ? Методах TCanvas ? Так некоторые из них идентичны GDI, например Rectangle(x1, y1, x2, y2) — метод TCanvas, а в GDI — Rectangle(HDC, x1, y1, x2, y2), где HDC — контекст устройства, на котором вы рисуете.
А по большому счёту TCanvas и.т.п. это классы для работы с тем-же GDI. Загляните в graphics.pas и убедитсь.
|
|
|