Текущий архив: 2011.07.03;
Скачать: CL | DM;
ВнизТекст на TImage Найти похожие ветки
← →
Fr (2011-03-25 16:46) [0]На форме лежит TImage. В него загружен бмп. Align установлен в alClient. Stretch = true.
Задача: в координаты 10,10 TImage вывести текст с Size=8. Размер выведенного текста не должен изменяться при ресайзе формы.
Пытаюсь сделать так:
procedure TForm1.FormResize(Sender: TObject);
begin
with Image1.Canvas do begin
Font.Name:="Arial";
Font.Height:=10;
//Font.Style:=[fsBold];
Font.Color:=clYellow;
OldBkMode := SetBkMode(Handle, TRANSPARENT);
TextOut( 10, 10, "String");
SetBkMode(Handle, OldBkMode);
end;
end;
Но при ресайзе формы размер выводимого шрифта так же меняется.
Как добиться того, чтобы при ресайзе формы шрифт всегда выводился одним размером?
← →
clickmaker © (2011-03-25 16:53) [1]все, что рисуется на Image1.Canvas, становится частью Image и ресайзится вместе с ним, слоев там нет.
Рисовать текст нужно отдельно
← →
Игорь Шевченко © (2011-03-25 16:54) [2]
> Как добиться того, чтобы при ресайзе формы шрифт всегда
> выводился одним размером?
1. Рисовать на событии OnPaint
2. На TPaintBox
← →
Fr (2011-03-25 17:10) [3]
> clickmaker © (25.03.11 16:53) [1]
Так onResize обрабатывается уже после изменения размера формы? Т.е., когда событие наступает, форма уже изменена, соответственно и Image1 изменил свои размеры. И вот в этот момент я пытаюсь вывести текст заданного размера....
← →
Leon-Z © (2011-03-25 21:50) [4]
> Fr (25.03.11 17:10) [3]
> Так onResize обрабатывается уже после изменения размера
> формы?
Событие OnResize наступает до изменения размера окна но в то время когда уже заданы новые размеры.
Короче Resize меняет размеры (этого мы не видим).
Потом Paint перерисовывает с новыми размерами (а это видим).
← →
Amoeba_ (2011-03-25 21:52) [5]
> r (25.03.11 17:10) [3]
>
>
> > clickmaker © (25.03.11 16:53) [1]
>
> Так onResize обрабатывается уже после изменения размера
> формы? Т.е., когда событие наступает, форма уже изменена,
> соответственно и Image1 изменил свои размеры. И вот в этот
> момент я пытаюсь вывести текст заданного размера....
>
Нефиг рисовать на TImage, он не для этого предназначен, ССЗБ. Тебе уже ИШ подсказал, как сделать правильно.
Для непонятливого поясню:
Загружаешь (из файла или из ресурса) картинку в TBitmap. Затем в событии OnPaint компонента TPainBox отрисовываешь на его Canvas сперва этот Bitmap, а затем выводишь текст. А у формы св-во DoubleBuffered установи (в Runtime) в True.
← →
Fr (2011-03-26 10:40) [6]
> Тебе уже ИШ подсказал, как сделать правильно.
Это я уже сделал сразу после его совета. Спасибо. Хотелось разобраться - почему не работает первый вариант.
Поэтому спасибо и Leon-Z © (25.03.11 21:50) [4] за пояснение.
Страницы: 1 вся ветка
Текущий архив: 2011.07.03;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.003 c