Главная страница
    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.002 c
6-1269852337
Сварт
2010-03-29 12:45
2013.10.27
Нужен программист за деньги на 10 минут


2-1359632987
SSS
2013-01-31 15:49
2013.10.27
Перерисовка компонентов


15-1368535749
brother
2013-05-14 16:49
2013.10.27
Помогите найти запись концерта


2-1359636319
Scott Storch
2013-01-31 16:45
2013.10.27
Где взять координаты домов всех улиц населенных пунктов


15-1368014800
Jeer
2013-05-08 16:06
2013.10.27
С Праздником Победы!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский