Перейти к содержанию
Fire Monkey от А до Я
  • 0

[TCanvas] Как при отрисовки не вылезьте за указанную область?


xenon54

Вопрос

Здравствуйте. Подскажите пожалуйста как нарисовать текст на канве внутри контрола так чтобы если начало его координат было за канвой контрола, то за контролом он не рисовался.

Поясню на примере:

Canvas.FillText(TRectF.Create(0,-10,100,10),'11111',True,1,FillTextFlags,TTextAlign.Leading);

Если написать это в методе Paint у контрола, то верхняя половина текста вылезет и нарисуется на форме. Как этого избежать?

Пробовал создавать отдельный битмап, рисовать в нем, а потом через DrawBitmap переносить. Результата достигаю, но когда идет частая перерисовка, то подтормаживает сильно, ну и качество картинки что-то размытое получается при такм методе.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Вопрос с невылезанием за контрол снимается, тут видимо криворукость не дала нужного эффекта при применении буферного битмапа с первого раза. Остается вопрос с размытостью.

Если рисовать текст сразу на канве, то все четко получается, а если текст рисовать на буферной канве, а поотм переносить на основную canvas.DrawBitmap, то текст немного размыт.

Ссылка на комментарий
  • 0

Решил проблему тем, что сделал буферное полотно в 2 раза больше и соответственно пересчет отрисовки всех объектов на нем пришлось делать. При переносе с холста большего по размерам в 2 раза чем тот на который переносится картинка, все нарисованные объекты стали четко выглядеть, не размыто. Можно сказать проблема решилась, но хотелось бы понять как оно должно быть правильно...

Ссылка на комментарий
  • 0
  • Администраторы

Достаточно установить у контрола 

ClipChildren = True

Или для канвы установить область отсечения:

Canvas.IntersectClipRect(Button1.LocalRect);
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...