
10.03.2021, 17:55
|
Новичок
|
|
Регистрация: 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, который можно доработать под себя.
|
заработало, только размер текста лайбл не пропорционален перерисованному
|