Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.07.03;
Скачать: [xml.tar.bz2];

Вниз

Текст на 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
1-1258536836
Separator
2009-11-18 12:33
2011.07.03
id текущего thread?


2-1300958713
Дмитрий С
2011-03-24 12:25
2011.07.03
Есть какие нибудь известные грабли Graphics и много-поточности.


15-1300355136
OW
2011-03-17 12:45
2011.07.03
Работник отдела персонала - что за зверь?


11-1234851691
xz386
2009-02-17 09:21
2011.07.03
фукция копирования


2-1301068831
johnjar
2011-03-25 19:00
2011.07.03
Сокеты через интернет





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