|
#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
|
|||
|
|||
поместил на имадж бмп картинку, после буттон клик появляется точка на картинке
|
#8
|
|||
|
|||
Цитата:
|
#9
|
|||
|
|||
размеры разные, но я думаю решу этот вопрос, спасибо
Последний раз редактировалось crazyman, 10.03.2021 в 18:01. |
#10
|
||||
|
||||
Выкладываю тестовый проект.
Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. |
#11
|
||||
|
||||
Цитата:
Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. |
#12
|
|||
|
|||
Цитата:
|
#13
|
|||
|
|||
Цитата:
|
#14
|
||||
|
||||
ну намудрить можно что угодно. вопрос - стоит ли оно того?
Если с этим не заморачиваться, то я бы привел изображение в Image сразу к нужному масштабу и пропорции. Тогда не придется мудрить с дополнительными преобразованиями. Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. |
#15
|
|||
|
|||
Цитата:
Последний раз редактировалось crazyman, 10.03.2021 в 18:23. |