Delphi字体设置
关于字体旋转,要使用textout,并达到如下效果:就是象棋棋盘里楚河,汉界那两个字的效果,附图...
关于字体旋转,要使用textout,并达到如下效果:
就是象棋棋盘里楚河,汉界那两个字的效果,附图 展开
就是象棋棋盘里楚河,汉界那两个字的效果,附图 展开
2个回答
展开全部
给你个函数,能将字符串任意旋转角度(有些字体不能任意旋转,如 MS Sans Serif,只能旋转 90、180、270,这时你把注释掉的部分加上就行了)。
//Canvas:目标;Text:文字;X,Y:输出坐标;Angle:旋转角度(角度制)
procedure AngleTextOut(Canvas: TCanvas; Text: string; X, Y, Angle: Integer);
var
NewFnt, OldFnt: TFont;
Lfnt: TLogFont;
begin
NewFnt := TFont.Create;
NewFnt.Assign(Canvas.Font);
GetObject(NewFnt.Handle, SizeOf(Lfnt), @Lfnt);
with Lfnt do
begin
lfEscapement := 10 * Angle;
lfOrientation := 0;
//lfOutPrecision := OUT_DEFAULT_PRECIS or OUT_TT_ONLY_PRECIS;
end;
NewFnt.Handle := CreateFontIndirect(Lfnt);
OldFnt := TFont.Create;
OldFnt.Assign(Canvas.Font);
Canvas.Font.Assign(NewFnt);
NewFnt.Free;
Canvas.TextOut(X, Y, Text);
Canvas.Font.Assign(OldFnt);
OldFnt.Free;
end;
2、该函数是逆时针旋转的,如:
AngleTextOut(Self.Canvas, 'abcdefg', 100, 100, -90);
你自己看下 行不行?
//Canvas:目标;Text:文字;X,Y:输出坐标;Angle:旋转角度(角度制)
procedure AngleTextOut(Canvas: TCanvas; Text: string; X, Y, Angle: Integer);
var
NewFnt, OldFnt: TFont;
Lfnt: TLogFont;
begin
NewFnt := TFont.Create;
NewFnt.Assign(Canvas.Font);
GetObject(NewFnt.Handle, SizeOf(Lfnt), @Lfnt);
with Lfnt do
begin
lfEscapement := 10 * Angle;
lfOrientation := 0;
//lfOutPrecision := OUT_DEFAULT_PRECIS or OUT_TT_ONLY_PRECIS;
end;
NewFnt.Handle := CreateFontIndirect(Lfnt);
OldFnt := TFont.Create;
OldFnt.Assign(Canvas.Font);
Canvas.Font.Assign(NewFnt);
NewFnt.Free;
Canvas.TextOut(X, Y, Text);
Canvas.Font.Assign(OldFnt);
OldFnt.Free;
end;
2、该函数是逆时针旋转的,如:
AngleTextOut(Self.Canvas, 'abcdefg', 100, 100, -90);
你自己看下 行不行?
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询