Перейти к содержанию
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 эмодзи.

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

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

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

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