Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Рисование на канве 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


Наверх

Титульная страница Поиск, карта сайта Написать письмо