Форум: "KOL";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
ВнизНе могу изменить направление шрифта дважды Найти похожие ветки
← →
BMouradov (2006-04-01 18:28) [0]Уважаемые господа! Подскажите, почему не получается изменить направление шрифта дважды? Рисую на 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 подобная конструкция работает, только там вспомогательный класс не нужен.
← →
ECM © (2006-04-01 18:52) [1]Всё получается...
Не надо всё так усложнять..
:))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
← →
BMouradov (2006-04-01 18:56) [2]Класс!! Спасибо большое!
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.041 c