Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.008 c
15-1300133801
tesseract
2011-03-14 23:16
2011.07.03
аквариум


15-1299878994
Юрий
2011-03-12 00:29
2011.07.03
С днем рождения ! 12 марта 2011 суббота


15-1300391272
vajo
2011-03-17 22:47
2011.07.03
Проблема со звуком на компе.


15-1300743002
Юрий
2011-03-22 00:30
2011.07.03
С днем рождения ! 22 марта 2011 вторник


15-1291142271
xayam
2010-11-30 21:37
2011.07.03
Как ускорить индексирование сайта поисковиками?