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

Вниз

Вертикальный текст   Найти похожие ветки 

 
Евгений Р.   (2007-08-27 22:25) [0]

Можно ли вывести текст вертикально?


 
Юрий Зотов ©   (2007-08-27 22:28) [1]

См. TLogFont и CreateFontIndirect.


 
Евгений Р.   (2007-08-27 22:56) [2]

OK


 
Евгений Р.   (2007-08-28 17:02) [3]

Необходимо выводить и горизонтально и вертикально. Первый раз выводит правильно ("22222222222"). Затем, после возобновления нового шрифта выводит неправильно ("4444444444444").

procedure TForm1.Button1Click(Sender: TObject);
 var lf: tlogfont;
     fntNew,fntOld: hfont;
begin
     fillchar(lf, sizeof(lf), 0);
     with lf do begin
         lfheight := 15;
         lfescapement := 900;
         strpcopy(lffacename, "Tahoma");
     end;
     fntNew:=createfontindirect(lf);
//========== Запоминаю старый шрифт
     fntOld:=canvas.Font.Handle;

//========== Вывожу стандартно
     canvas.TextOut(50,50,"111111111111");

//========== Вывожу новым шрифтом вертикально
     canvas.Font.Handle:=fntNew;
     canvas.TextOut(200,50,"22222222222");

//========== Восстанавливаю старый шрифт и пытаюсь вывести им
     canvas.Font.Handle:=fntOld;
     canvas.TextOut(200,100,"3333333333");

//========== Восстанавливаю новый шрифт и пытаюсь вывести им
     canvas.Font.Handle:=fntNew;
     canvas.TextOut(100,200,"4444444444");
//надпись выводится неправильно

end;


 
{RASkov} ©   (2007-08-28 17:17) [4]

> [3] Евгений Р.   (28.08.07 17:02)

procedure TForm1.Button2Click(Sender: TObject);
var lf: tlogfont;
    fntNew,fntOld: hfont;
begin
    fillchar(lf, sizeof(lf), 0);
    with lf do begin
        lfheight := 15;
        lfescapement := 900;
        strpcopy(lffacename, "Tahoma");
    end;
    fntNew:=createfontindirect(lf);
//========== Вывожу стандартно
    canvas.TextOut(50,50,"111111111111");
//========== Вывожу новым шрифтом вертикально
    fntOld:=SelectObject(Canvas.Handle, fntNew); //========== Запоминаю старый шрифт и устанавливаю новый
    canvas.TextOut(200,50,"22222222222");

//========== Восстанавливаю старый шрифт и пытаюсь вывести им
    SelectObject(Canvas.Handle, fntOld);
    canvas.TextOut(200,100,"3333333333");

//========== Восстанавливаю новый шрифт и пытаюсь вывести им
    SelectObject(Canvas.Handle, fntNew);
    canvas.TextOut(100,200,"4444444444");
//надпись выводится правильно
    DeleteObject(fntNew); // - и не забываем освобождать ресурс...
end;


 
Евгений Р.   (2007-08-28 18:27) [5]

Спасибо, все работает, но: Почему стандартный шрифт канвы Tahoma (size=8) отличается от такого, определенного по createfontindirect.


 
{RASkov} ©   (2007-08-28 20:31) [6]

> [5] Евгений Р.   (28.08.07 18:27)
> Почему стандартный шрифт канвы Tahoma (size=8)

Возможно у тебя разные имена шрифтов
Вот у меня стандартный шрифт у Канвы из твоего примера "MS Sans Serif" и создается createfontindirect"ом "Tahoma"....
Попробуй вот так:

> strpcopy(lffacename, "Tahoma");

strpcopy(lffacename, Canvas.Font.Name);


 
Евгений Р.   (2007-08-28 23:36) [7]


> {RASkov} ©   (28.08.07 20:31) [6]


> Возможно у тебя разные имена шрифтов

procedure TForm1.Button2Click(Sender: TObject);
begin
  ShowMessage(Canvas.Font.Name+"   "+IntToStr(Canvas.Font.Size));
end;


Сообщает "Tahoma 8"


> Вот у меня стандартный шрифт у Канвы из твоего примера "MS
> Sans Serif"

В D2005 по умолчанию Tahoma 8


> Попробуй вот так: ....


Попробовал:

     with lf do begin
//          lfheight := 15;
         lfheight:=Canvas.Font.Size;
         lfescapement := 900;
//          strpcopy(lffacename, "Tahoma");
         strpcopy(lffacename, Canvas.Font.Name);
     end;


Визуально разница примерно в 2 раза.
Наверное lfheight и Font.size совершенно разные понятия и соотношение примерно 1:2. Так и сделал 8 и 16. Выглядит неплохо.

Интересно, так будет и на других машинах или возможны сюрпризы?


 
{RASkov} ©   (2007-08-29 00:27) [8]

> [7] Евгений Р.   (28.08.07 23:36)
> Наверное lfheight и Font.size совершенно разные понятия

Разные...
Попробуй так:
   with lf do begin
    lfheight := 15;
.......
и
Canvas.Font.Height:=15;


 
Евгений Р.   (2007-08-29 01:16) [9]


> {RASkov} ©   (29.08.07 00:27) [8]


> Попробуй так:
>    with lf do begin
>     lfheight := 15;
> .......
> и
> Canvas.Font.Height:=15;


А чем отличается lfheight:=Canvas.Font.Size;

Или 15- магическое число?


 
{RASkov} ©   (2007-08-29 01:26) [10]

> [9] Евгений Р.   (29.08.07 01:16)
> Или 15- магическое число?

При чем здесь 15... просто Font.Height<>Font.Size....


 
Евгений Р.   (2007-08-29 02:04) [11]

Если Font.Height=Font.Size, то все равно шрифты разные????


 
Германн ©   (2007-08-29 02:05) [12]


> {RASkov} ©   (29.08.07 01:26) [10]
>
> > [9] Евгений Р.   (29.08.07 01:16)
> > Или 15- магическое число?
>
> При чем здесь 15... просто Font.Height<>Font.Size....
>

Из справки:
Font.Size = -Font.Height * 72 / Font.PixelsPerInch


 
Германн ©   (2007-08-29 02:11) [13]

Мой пост Германн ©   (29.08.07 02:05) [12]
конечно же относится к
> Евгений Р.


 
{RASkov} ©   (2007-08-29 03:24) [14]

> [11] Евгений Р.   (29.08.07 02:04)
> Если Font.Height=Font.Size, то все равно шрифты разные????

См [12]
Ты просто не верно понял мой [10] пост, я хотел сказать, что Font.Height и Font.Size - это не одно и тоже.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.09.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.041 c
2-1188455990
mfender
2007-08-30 10:39
2007.09.23
TIdPOP3 - ошибка


2-1188239457
hprx
2007-08-27 22:30
2007.09.23
Menu


2-1188390706
Cobalt
2007-08-29 16:31
2007.09.23
var-Параметры_процедур - указатели. То ли лыжи не едут, ....


1-1184211090
Phoenix
2007-07-12 07:31
2007.09.23
Необходимо определить были ли пороизведенны изменения на форме


4-1173250668
crytogen
2007-03-07 09:57
2007.09.23
Отсутствие бумаги при печати PCL





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