Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.10.27;
Скачать: CL | DM;

Вниз

Помогите с отрисовкой текста на 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.007 c
15-1368261134
Jeer
2013-05-11 12:32
2013.10.27
ПО "Буран"


15-1368710507
О-Сознание
2013-05-16 17:21
2013.10.27
Сделать в один WHILE.


15-1368294835
Дмитрий С
2013-05-11 21:53
2013.10.27
Почему


2-1360056754
vlad
2013-02-05 13:32
2013.10.27
TList


2-1359534426
Andrey869
2013-01-30 12:27
2013.10.27
перехват ошибок