Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2013.10.27;
Скачать: [xml.tar.bz2];

Вниз

Помогите с отрисовкой текста на TImage   Найти похожие ветки 

 
denkop   (2011-09-23 14:53) [0]

Нужен компонент, который будет рисовать произвольный текст на загруженную картинку в TImage. Набросал код, но работает он неправильно. Компонент уходит в бесконечное перерисовывание.. Подскажите пож, что не так делаю. Вот код:

unit uLabeledImage;

interface

uses ExtCtrls, Graphics, Classes;

type
 TLabeledImage = class(TImage)
 private
   FLabelFont: TFont;
   FLabelOffsetX, FLabelOffsetY: integer;
   FLabelCaption: string;
 protected
   procedure Paint; override;
 public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
 published
   property LabelFont: TFont read FLabelFont write FLabelFont;
   property LabelCaption: string read FLabelCaption write FLabelCaption;
   property LabelOffsetX: integer read FLabelOffsetX write FLabelOffsetX;
   property LabelOffsetY: integer read FLabelOffsetY write FLabelOffsetY;
 end;

procedure Register;

implementation

uses Windows, UxTheme;

procedure Register;
begin
 RegisterComponents("test", [TLabeledImage]);
end;

constructor TLabeledImage.Create(AOwner: TComponent);
begin
 inherited;
 FLabelFont:=TFont.Create;
end;

destructor TLabeledImage.Destroy;
begin
 FLabelFont.Free;
 inherited;
end;

procedure TLabeledImage.Paint;
begin
 Picture.Bitmap.Canvas.Font.Assign(FLabelFont);
 Picture.Bitmap.Canvas.TextOut(FLabelOffsetX, LabelOffsetY, FLabelCaption);
 inherited;
end;

end.


 
Омлет ©   (2011-09-23 15:51) [1]

При событии Picture.OnChange происходит перерисовка, в которой ты опять, рекурсивно вызываешь Picture.OnChange.

Использовать за основу TImage - плохая идея. Лучше взять TGraphicControl, к примеру, и вручную контролировать отрисовку компонента.


 
Омлет ©   (2011-09-23 15:54) [2]

К тому же, текст у тебя выводится на оригинальном изображении, т.е. изменить его уже нельзя будет.


 
Dimka Maslov ©   (2011-09-23 22:14) [3]

Поверх TImage кидается TLabel c прозрачным фоном.


 
reonid ©   (2011-09-29 11:55) [4]

Можно рисовать на унаследованном от TGraphicControl канвасе.

THackGraphicControl(Self).Canvas



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2013.10.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.062 c
2-1360056754
vlad
2013-02-05 13:32
2013.10.27
TList


1-1316775192
denkop
2011-09-23 14:53
2013.10.27
Помогите с отрисовкой текста на TImage


15-1368563403
Юрий
2013-05-15 00:30
2013.10.27
С днем рождения ! 15 мая 2013 среда


15-1368449808
sniknik
2013-05-13 16:56
2013.10.27
Ищу книгу (/автора)...


1-1317227566
sniknik
2011-09-28 20:32
2013.10.27
Ситуация... Citrix and TPrinter поддержка "отображаемых"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский