Тема: Jvlabel в Image
Показать сообщение отдельно
  #5  
Старый 09.03.2021, 19:55
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Иерархия такая: 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, который можно доработать под себя.
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием