![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Рисование на канве TImage
Zenith © (2010-09-14 00:28:00)Здравствуйте, ситуация такова. Кидаю TImagе на форму, загружаю в него bmp-картинку, в процессе работы рисую на канвасе (точнее, вывожу текст посредством TextOut). При первой прорисовке все отлично, но при втором вызове процедуры рисования новый текст накладывается на старый, а старый не убирается, поэтому получается нагромождение текста :(
В чем решение проблемы?
Всякие Refresh, Repaint, Invalidate не помогают...
Zenith (2010-09-14 14:15:00) [1]
> sniknik © (14.09.10 07:54) [5]
>
> > загружаю в него bmp-картинку
> загружай не в него, а в битмап, вместо очистки отрисовка
> на имедже этого битмапа.
Замечательное решение! Спасибо.
бумбум (2010-09-14 12:54:00) [2]Image1.Canvas.Brush.Color:= Clwhite;
бумбум (2010-09-14 12:53:00) [3]
> Zenith (14.09.10 12:29) [7]
> С бумаги я могу стереть предыдущий текст резинкой, а с канваса
> получится? Подскажи как.
Зачем стирать, не проще ли залить одним цветом белым или какой у тебя там по умолчанию на форме например.
Zenith (2010-09-14 12:29:00) [4]С бумаги я могу стереть предыдущий текст резинкой, а с канваса получится? Подскажи как.
Anatoly Podgoretsky (2010-09-14 09:35:00) [5]> Zenith (14.09.2010 01:13:03) [3]
А на бумаге у тебя получается?
sniknik (2010-09-14 07:54:00) [6]> загружаю в него bmp-картинку
загружай не в него, а в битмап, вместо очистки отрисовка на имедже этого битмапа.
или, объект с текстом положи поверх имеджа (лейбел не пойдет, нужен "оконный контрол" типа "статиктекста". и только меняй в нем текст.
Германн (2010-09-14 02:06:00) [7]
> Почему при повторном вызове процедуры рисования на канвасе
> новый текст накладывается на старый?
По определению. Вот ты рисуешь на стене новое "граффити". Разве уже нарисованное ранее удаляется само собой? Нет. Они суммируются по неким правилам. (Стена - канвас. BMP-картинка, текст, новый текст - граффити).
> Как убрать старый текст?
Для начала прочитать http://www.gunsmoker.ru/2008/10/x-y-z.html
Потом заменить X на Z.
Тогда можно будет попробовать ответить.
Zenith (2010-09-14 01:13:00) [8]Попробовал заменить компонентом TPaintBox - та же самая история :(
Почему при повторном вызове процедуры рисования на канвасе новый текст накладывается на старый? Как убрать старый текст?
Германн (2010-09-14 01:00:00) [9]
> Нужно что-то вроде Canvas.Clear
Такого в данном случае нет. Компонент TImagе пока что не поддерживает "слои". :)
Zenith (2010-09-14 00:30:00) [10]Нужно что-то вроде Canvas.Clear