![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не могу изменить направление шрифта дважды
BMouradov © (2006-04-01 18:28:00)Уважаемые господа! Подскажите, почему не получается изменить направление шрифта дважды? Рисую на pb(PainBox):
type TMyFont = object(TGraphicTool)
public
procedure SetHandle(H: THandle);
end;
procedure TMyFont.SetHandle;
begin
fHandle := H;
end;
procedure ...;
var LogRec: TLOGFONT;
begin
pb.Canvas.Font.FontName := 'Arial';
GetObject(pb.Canvas.Font.Handle, SizeOf(LogRec), Addr(LogRec));
LogRec.lfEscapement := 300;
TMyFont(pb.Canvas.Font^).SetHandle(CreateFontIndirect(LogRec));
pb.Canvas.TextOut(10, 10, '123');
LogRec.lfEscapement := 900;
TMyFont(pb.Canvas.Font^).SetHandle(CreateFontIndirect(LogRec));
pb.Canvas.TextOut(20, 20, '123');
По идее, должны выйти две надписи, под углом 30 и 90. Но обе выходят под 30.
Пробовал и более развернуто, но не помогло:
var hNewFont, hOldFont: Cardinal;
hOldFont := TMyFont(pb.Canvas.Font^).GetHandle;
GetObject(pb.Canvas.Font.Handle, SizeOf(LogRec), Addr(LogRec));
LogRec.lfEscapement := 300;
hNewFont := CreateFontIndirect(LogRec);
TMyFont(pb.Canvas.Font^).SetHandle(hNewFont);
pb.Canvas.TextOut(10, 10, '123');
TMyFont(pb.Canvas.Font^).SetHandle(hOldFont);
DeleteObject(hNewFont);
//и то же самое для 900.
Помогите, пожалуйста! В VCL подобная конструкция работает, только там вспомогательный класс не нужен.
BMouradov (2006-04-01 18:56:00) [1]Класс!! Спасибо большое!
ECM (2006-04-01 18:52:00) [2]Всё получается...
Не надо всё так усложнять..
:))
procedure TForm1.PaintBox1Paint(Sender: PControl; DC: HDC);
begin
with Sender.Canvas^ do begin
Brush.Color := clGray;
FillRect(Sender.ClientRect);
Font.FontOrientation := 300;
TextOut(10,10,'123');
Font.FontOrientation := 900;
TextOut(30,30,'123');
end;
end;
В результате видим две написи первая повернута на 30 гр. вторая на 90