Текущий архив: 2007.09.23;
Скачать: CL | DM;
ВнизВертикальный текст Найти похожие ветки
← →
Евгений Р. (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;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.047 c