|
|
#1
|
|||
|
|||
Jvlabel в Image
Есть Jvlabel текст расположен под углом, есть тень текста. Возможно ли считать пиксели Jvlabel, чтобы разместить в Image?
Пробовал так Код:
procedure TForm1.Button2Click(Sender: TObject); begin image4.Width:=Jvlabel1.Width-3; image4.Height:=Jvlabel1.Height-2; image4.Canvas.Font:=JvLabel1.Font; Image4.Canvas.TextOut(0, 0, form1.JvLabel1.Caption); end; Cам понимаю что считываю именно текст, а не пиксели и загоняю в Image. А нужна тень и угол наклона. Последний раз редактировалось crazyman, 08.03.2021 в 10:15. |
#2
|
|||
|
|||
Сделал так
Код:
procedure TForm1.Button2Click(Sender: TObject); begin image4.Width:=Jvlabel1.Width-3; image4.Height:=Jvlabel1.Height-2; image4.Canvas.Font:=JvLabel1.Font; Image4.Canvas.CopyRect(Rect(0, 0, image4.Width, image4.Height),Jvlabel1.Canvas,Rect(0, 0, image4.Width, image4.Height)); end; но так как JvLabel прозрачный, то в Image попадает то что за JvLabel. Последний раз редактировалось crazyman, 08.03.2021 в 10:15. |
#3
|
|||
|
|||
а посмотри, не ли метода PaintTo у компонента. Если есть, то используй его для отрисовки на соотв. канве...
|
#4
|
|||
|
|||
К сожалению нет
|
#5
|
||||
|
||||
Иерархия такая: 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; Собственно, это что-то примитивной реализации метода PaintTo для TGraphicControl, который можно доработать под себя. Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. Последний раз редактировалось dr. F.I.N., 09.03.2021 в 20:11. |
Этот пользователь сказал Спасибо dr. F.I.N. за это полезное сообщение: | ||
crazyman (10.03.2021)
|
#6
|
|||
|
|||
у меня не работает Ваш пример с обычным Label
Ошибка Cannot assign a Tpicture to a Tbitmap |
#7
|
|||
|
|||
Цитата:
|