Тема: Jvlabel в Image
Показать сообщение отдельно
  #8  
Старый 10.03.2021, 17:55
crazyman crazyman вне форума
Новичок
 
Регистрация: 22.04.2012
Сообщения: 99
Репутация: 10
По умолчанию

Цитата:
Сообщение от dr. F.I.N.
Иерархия такая: TGraphicControl -> TJvGraphicControl -> TJvlabel
Следовательно TJvlabel не имеет метода PaintTo (данный метод реализован у наследников TWinControl).
Однако, TGraphicControl может обрабатывать сообщения, следовательно можно отправить ему WM_PAINT и подсунуть нужный канвас (HDC).
Напрямую отрисовать на TImage у меня не получилось, но с временным битмапом отрабатывает на ура:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  bmp: TBitmap;
begin
  bmp := TBitmap.Create; // создаем временный битмап
  bmp.Assign(Image1.Picture); // загружаем в него содержимое TImage
  MoveWindowOrg(bmp.Canvas.Handle, 120, 30);  // устанавливаем X и Y отрисовки напдписи
  Label1.Perform(WM_PAINT, bmp.Canvas.Handle, 0); // отрисовываем надпись
  image1.Picture.Assign(bmp); // загружаем в TImage содержимое временного битмапа
  bmp.Free;  // уничтожаем временный битмап
end;
У меня не установлен TJvlabel, в примере отрисовка кастомного TLabel.

Собственно, это что-то примитивной реализации метода PaintTo для TGraphicControl, который можно доработать под себя.
заработало, только размер текста лайбл не пропорционален перерисованному
Ответить с цитированием