Главная страница
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
2-1359696227
Anthony68
2013-02-01 09:23
2013.10.27
Почему то не вызывается событие OnShow компонента TOpenDialog


2-1359720812
salexn_123
2013-02-01 16:13
2013.10.27
Компиляция из командной строки


2-1359654647
berrimor
2013-01-31 21:50
2013.10.27
координаты второго монитора


6-1269852337
Сварт
2010-03-29 12:45
2013.10.27
Нужен программист за деньги на 10 минут


2-1359921846
Zheksonz
2013-02-04 00:04
2013.10.27
Мистика !))