Главная страница
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.009 c
15-1368014800
Jeer
2013-05-08 16:06
2013.10.27
С Праздником Победы!


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


15-1368216598
Bitt
2013-05-11 00:09
2013.10.27
Передать управление при изменении byte


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


2-1359822748
alexdn
2013-02-02 20:32
2013.10.27
Параллельные процессы?