Форум: "Начинающим";
Текущий архив: 2009.10.11;
Скачать: [xml.tar.bz2];
ВнизВертикальный TLablel Найти похожие ветки
← →
Tima (2009-08-05 17:38) [0]Каким образом выводить текст вертикально?
Точнее под углом 90 градусов.
← →
Palladin © (2009-08-05 17:50) [1]никак
← →
{RASkov} © (2009-08-05 17:56) [2]взять паинтбокс, т.е. отказаться от ТЛабел и рисовать текст самому хоть вертикально, хоть наклонно... хоть задом наперед.
вариантов реализаций много. например LogFont или канву повернуть...
← →
{RASkov} © (2009-08-05 18:01) [3]кстати вертикально малой кровью можно и в Лабеле сделать например так:
В
е
р
т
и
к
а
л
ь
н
ы
й
т
е
к
с
т
!
← →
Palladin © (2009-08-05 18:06) [4])) это будет гениально... аффтора зачетно уволят )
← →
MonoLife © (2009-08-05 18:25) [5]не Tlabel, типа такого:
s:string="Text";
Var i, k: integer;
begin
k:=10;
for i:=1 to Length(s) do
begin
self.Canvas.TextOut(20,k,s[i]);
inc(k,15);
end;
end;
← →
Юрий Зотов © (2009-08-05 18:25) [6]Для шрифтов TrueType - можно:
procedure TForm1.FormPaint(Sender: TObject);
var
LogFont: TLogFont;
OldFont, NewFont: HFont;
begin
OldFont := GetObject(Font.Handle, SizeOf(TLogFont), @LogFont);
LogFont.lfEscapement := 900; // Угол в десятых долях градуса
NewFont := CreateFontIndirect(LogFont);
SelectObject(Canvas.Handle, NewFont);
Canvas.TextOut(50, 50, "Привет!");
SelectObject(Canvas.Handle, OldFont);
DeleteObject(NewFont)
end;
← →
Юрий Зотов © (2009-08-05 18:28) [7]Естественно, это уже не TLabel.
А со стандартным TLabel - действительно никак. Он этого не умеет.
← →
Юрий Зотов © (2009-08-05 18:48) [8]Ошибочка вкралась, невнимательно посмотрел, что возвращает GetObject. Вот так лучше будет:
procedure TForm1.FormPaint(Sender: TObject);
var
LogFont: TLogFont;
NewFont: HFont;
begin
GetObject(Font.Handle, SizeOf(TLogFont), @LogFont);
LogFont.lfEscapement := 900; // Угол в десятых долях градуса
NewFont := CreateFontIndirect(LogFont);
SelectObject(Canvas.Handle, NewFont);
Canvas.TextOut(50, 50, "Привет");
SelectObject(Canvas.Handle, Font.Handle);
DeleteObject(NewFont)
end;
← →
Kolan © (2009-08-05 22:43) [9]Зачем писать текст вертикально, его не удобно читать :)
← →
Amoeba © (2009-08-05 23:11) [10]
> Tima (05.08.09 17:38)
>
> Каким образом выводить текст вертикально?
> Точнее под углом 90 градусов.
Написать свой компонент или использовать готовый - их в сети вагон и маленькая тележка.
← →
Rouse_ © (2009-08-05 23:45) [11]
> Юрий Зотов © (05.08.09 18:48) [8]
> Вот так лучше будет:
Ну на всякий случай лучше возвращать на место то, что выдал первоначальный SelectObject. Например:OldFont := SelectObject(Canvas.Handle, NewFont);
Canvas.TextOut(50, 50, "Привет");
DeleteObject(SelectObject(Canvas.Handle, OldFont));
← →
Юрий Зотов © (2009-08-06 07:56) [12]> Rouse_ © (05.08.09 23:45) [11]
> лучше возвращать на место то, что выдал первоначальный SelectObject
Э-э-э... вообще-то я в курсе стандартов.... только в нашем случае заранее известно, что же выдаст первоначальный SelectObject:
OldFont := SelectObject(Canvas.Handle, NewFont);
Caption := Format("%x %x", [Font.Handle, OldFont]);
А раз так, то лишняя переменная ни к чему. Именно поэтому так и было написано.
← →
AIK © (2009-08-06 12:54) [13]Через букву добовлять #13
Label1.Caption:="a"+#13+"b"+#13+"c";
)))
← →
brother © (2009-08-07 04:39) [14]> Через букву добовлять #13
#13#10
← →
PZ (2009-08-07 07:18) [15]> [8] Юрий Зотов © (05.08.09 18:48)
А пример-то не работает.
Нашел аналогичный пример
http://www.zoonman.com/library/rotatetext.htm
так там примечание : "под WinXP почему-то не работает".
Есть ли этому объяснение?
← →
Юрий Зотов © (2009-08-07 10:13) [16]Пример может не работать по 2-м причинам:
1. Форме не назначен обработчик OnPaint.
2. Форме не выставлен TrueType шрифт.
И то, и другое - невнимательность экспериментатора. Мы с XP в ней не виноваты, чес-слово.
← →
Юрий Зотов © (2009-08-07 10:29) [17]Выдержка из MSDN:
lfEscapement
Specifies the angle, in tenths of degrees, between the escapement vector and the x-axis of the device. The escapement vector is parallel to the base line of a row of text.
Windows NT/2000/XP:
When the graphics mode is set to GM_ADVANCED, you can specify the escapement angle of the string independently of the orientation angle of the string"s characters.
When the graphics mode is set to GM_COMPATIBLE, lfEscapement specifies both the escapement and orientation. You should set lfEscapement and lfOrientation to the same value.
Windows 95/98/Me:
The lfEscapement member specifies both the escapement and orientation. You should set lfEscapement and lfOrientation to the same value.
lfOrientation
Specifies the angle, in tenths of degrees, between each character"s base line and the x-axis of the device.
================
Если верить той же MSDN, то по умолчанию в XP стоит GM_COMPATIBLE - значит, lfEscapement и lfOrientation надо выставлять одинаковыми. Тем не менее, у меня работает и без этого.
← →
Tima (2009-08-07 13:09) [18]
> Ошибочка вкралась, невнимательно посмотрел, что возвращает
> GetObject. Вот так лучше будет:
>
> procedure TForm1.FormPaint(Sender: TObject);
> var
> LogFont: TLogFont;
> NewFont: HFont;
> begin
> GetObject(Font.Handle, SizeOf(TLogFont), @LogFont);
> LogFont.lfEscapement := 900; // Угол в десятых долях градуса
> NewFont := CreateFontIndirect(LogFont);
> SelectObject(Canvas.Handle, NewFont);
> Canvas.TextOut(50, 50, "Привет");
> SelectObject(Canvas.Handle, Font.Handle);
> DeleteObject(NewFont)
> end;
Этот пример конечно же работает, но как мне заставить таким образом рисовать на панели, которая в свою очередь лежит на закладке (TTabSheet)?
← →
Юрий Зотов © (2009-08-07 13:18) [19]> Tima (07.08.09 13:09) [18]
type
TMyPanel = class(TPanel)
protected
procedure Paint; override;
end;
procedure TMyPanel.Paint;
begin
inherited;
// А здесь можно рисовать хоть малиновых слонов.
end;
← →
PZ (2009-08-07 14:41) [20]> [16] Юрий Зотов © (07.08.09 10:13)
Действительно 2.
Добавил две строчки:
Font.CharSet := DEFAULT_CHARSET;
Font.Name := "Times New Roman";
и текст повернулся куда надо.
Спасибо
← →
Юрий Зотов © (2009-08-07 16:28) [21]> PZ (07.08.09 14:41) [20]
Можно и ничего не добавлять - есть Инспектор Объектов.
← →
PZ (2009-08-07 17:29) [22]> [21] Юрий Зотов © (07.08.09 16:28)
Спасибо, ясно
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.10.11;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.006 c