Главная страница
    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.003 c
15-1300397390
Юрий
2011-03-18 00:29
2011.07.03
С днем рождения ! 18 марта 2011 пятница


2-1301173364
Fr
2011-03-27 00:02
2011.07.03
Смещение ячеек в TDrawGrid


15-1300133801
tesseract
2011-03-14 23:16
2011.07.03
аквариум


2-1300957256
lewka
2011-03-24 12:00
2011.07.03
пауза при выполнении кода программы


2-1301350488
Германн
2011-03-29 02:14
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский