如何改善倾斜字体的显示质量()(100分)

  • 主题发起人 主题发起人 whitelion
  • 开始时间 开始时间
W

whitelion

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个程序,其中有一部分字体要求为倾斜显示,代码如下,但是字体在倾斜后严重变形,在打印机打印出来后几乎不能辨认,谁能帮忙。
void __fastcall Tmain::cctextout(int x, int y, String cctext, int tx, int ty)
{
//TODO: Add your source code here
//在坐标x,y的位置画出字符串cctext,倾斜角度为ty/tx
double temptag;
int langle;
if (tx!=0)
{
//temptag=ty/tx;
double tempangle;
tempangle=ArcTan2(-ty,tx);
langle=int(0.001*1000*tempangle*180/3.1415926*10);
}
else
{
if (ty>0)
{
langle=-900;
}
else
{
langle=900;
}
}
TFont * pFont;
TFont * sFont;
TLogFont rFont;
pFont=new TFont;
sFont=new TFont;
pFont->Assign(mycanvas->Font);
sFont->Assign(mycanvas->Font);
::GetObject(pFont->Handle,sizeof(rFont),&rFont);
rFont.lfEscapement=langle; //角度的十倍
rFont.lfOrientation=langle;
rFont.lfQuality=PROOF_QUALITY;
pFont->Handle=::CreateFontIndirect(&rFont);
mycanvas->Font->Assign(pFont);
pFont->Free();
mycanvas->TextOut(x,y,cctext);
mycanvas->Font->Assign(sFont);
sFont->Free();
}
这是一段bcb程序,希望高手能够指点一下
 
显示倾斜字体,给你写了一段DELPHI程序 :

procedure AngleText(var S1 :String; S2 :Integer; Pt :TPoint);
var
TheFnt :TFont;
LogFnt :TLogFont;
begin
with MDIChildForm.MainImage.Canvas do
begin
TheFnt :=TFont.Create;
TheFnt.Assign(Font);
GetObject(TheFnt.Handle,SizeOf(LogFnt),@LogFnt);
LogFnt.lfEscapement :=-S2*10; //S2为你想倾斜的角度
LogFnt.lfOrientation :=-S2*10;
TheFnt.Handle:=CreateFontIndirect(LogFnt);
Font.Assign(TheFnt);
TheFnt.Free;
SetBkMode(Handle,TRANSPARENT);
TextOut(Pt.x,Pt.y,S1); //S1为输出的文字
end;
end;
 
to 卷起千堆雪tyn
这样程序的结果就是旋转90,180,-90度时效果还好,如果是旋转其他的任意角度字几乎就看不清
有没有好的编程方法解决这个问题
 
谢谢卷起千堆雪tyn
ccproject@hzcnc.com
 
再次
谢谢卷起千堆雪tyn
我再试试程序
 
倾斜字对字体有没有特殊要求
我的字就是很不好看
 
接受答案了.
 
后退
顶部