急、急、急,汉字转动如何实现? 请参考EzCreateFont,LOGFONT的SDK文档。或者在北京大学出版社的《Windows程序设计》下册975页参考有关文章。其思路是创建一个逻辑字体,然后把它选进DC的设置中。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不要用字,用图形,再用bitblt(大概是这个名字吧)API函数. Windows的逻辑字体(LogFont)可以使用CreateFont或CreateFontIndirect这两个Windows API函数来定义任何想要的字体,由于CreateFont所需的参数太多通常我们使用CreateFontIndirect来建立所需的逻辑字体,这个API函数在Delphi中的声明为function CreateFontIndirect(const p1: TLogFont): HFONT; stdcall; 在Delphi 4 的Windows.pas中TLogFont的定义在第12407开始。对于其中lfItalic、lfUnderline、lfStrikeOut的值,如果非0则分别表示采用斜体字、加上下划线、加上删除线,反之则用正常字体.实例如下: 新建一个Delphi工程,在窗体上加入一个TButton控件,双击Button1,完成如下代码: procedure TForm1.Button1Click(Sender: TObject); var r:string; LogFont:TLogFont; NewFont,OldFont:THandle; begin SetBkMode(Canvas.Handle,Transparent); LogFont.lfHeight :=60; {lfHeight指定以逻辑单位标定的字体高度,取值可为正负或零,对于需要随意定义字体高度的情况下通常取负值,以保证获得实际尺寸的字体。} LogFont.lfWidth :=30; {lfWidth用于指定字体的平均宽度,由于Windows系统下的大多数字体都是比例字体因而采用平均宽度这个表示方法。若指定为0,则系统会自动根据适当的比例自动处理宽度。} LogFont.lfEscapement :=400; {指定输出方向与当前坐标系X轴之间的以十分之一度为单位的角度,这里就是40度了。} LogFont.lfWeight :=0; LogFont.lfItalic :=0; LogFont.lfUnderline :=0; LogFont.lfStrikeOut :=0; LogFont.lfCharSet :=DEFAULT_CHARSET; r :='宋体'#0; move(r[1],LogFont.lfFaceName[0],length(r)+1); NewFont :=CreateFontIndirect(LogFont); OldFont :=SelectObject(Canvas.Handle,NewFont); Canvas.TextOut(10,200,'测试字体');{输出内容是“测试字体”} SelectObject(Canvas.Handle,OldFont);{用完以后还要还原字体} DeleteObject(NewFont); end; 这样就可以按F9运行了,按Button1,得到图示窗体,是不是字体已经倾斜输出了? 应当注意:在SelectObject的过程中,操作系统会按照一定的原则在现有字体中寻找最佳匹配的字体,作为将来描绘文字的真正字体。在Windows环境下,每种字体具体输出为何种形式取决于很多因素,需要对以上这些参数进行有效的组合才能达到所要的效果。 其实买一本《Delphi4开发大全》(网上有下的),该论坛的一些部分的问题上面都有!对了【汉字转动】是平面还是立体转动?请说清楚! to lixiaolei: 您能给出平面转动和垂直转动的思路吗!图形是否也可以? 装载支持Gif动画的控件,CSDN上可以下载的啊!(如果你没买的话!),Abcfordelphi控件很好用的!何必若若编代码? I give you my solution by E-mail. 急!Delphi中,如何写代码实现:当登录窗口再次显示时,清空原来输入的用户名和密码? 大家说说如何处理货币类型的数据,来者有分。。。。。。 寻求一控件,帮帮忙 有没有可以像日记簿那样可以输入文本的日历控件? 那里有数据库的教学软件啊 那个函数将ascii码转化成字符串? 你好,请问你现在有时间么?能请你帮我解决个问题么? 高手请进来!分不够再给! 关于用ADO存取NT上Access库...... help & manual生成chm文件乱码 网络通信和delphi,很急! 在DELPHI中怎么给API函数传递参数?请看我的代码。
新建一个Delphi工程,在窗体上加入一个TButton控件,双击Button1,完成如下代码:
procedure TForm1.Button1Click(Sender: TObject);
var
r:string;
LogFont:TLogFont;
NewFont,OldFont:THandle;
begin
SetBkMode(Canvas.Handle,Transparent);
LogFont.lfHeight :=60; {lfHeight指定以逻辑单位标定的字体高度,取值可为正负或零,对于需要随意定义字体高度的情况下通常取负值,以保证获得实际尺寸的字体。}
LogFont.lfWidth :=30; {lfWidth用于指定字体的平均宽度,由于Windows系统下的大多数字体都是比例字体因而采用平均宽度这个表示方法。若指定为0,则系统会自动根据适当的比例自动处理宽度。}
LogFont.lfEscapement :=400; {指定输出方向与当前坐标系X轴之间的以十分之一度为单位的角度,这里就是40度了。}
LogFont.lfWeight :=0;
LogFont.lfItalic :=0;
LogFont.lfUnderline :=0;
LogFont.lfStrikeOut :=0;
LogFont.lfCharSet :=DEFAULT_CHARSET;
r :='宋体'#0;
move(r[1],LogFont.lfFaceName[0],length(r)+1);
NewFont :=CreateFontIndirect(LogFont);
OldFont :=SelectObject(Canvas.Handle,NewFont);
Canvas.TextOut(10,200,'测试字体');{输出内容是“测试字体”}
SelectObject(Canvas.Handle,OldFont);{用完以后还要还原字体}
DeleteObject(NewFont);
end;
这样就可以按F9运行了,按Button1,得到图示窗体,是不是字体已经倾斜输出了?
应当注意:在SelectObject的过程中,操作系统会按照一定的原则在现有字体中寻找最佳匹配的字体,作为将来描绘文字的真正字体。在Windows环境下,每种字体具体输出为何种形式取决于很多因素,需要对以上这些参数进行有效的组合才能达到所要的效果。
对了【汉字转动】是平面还是立体转动?请说清楚!
您能给出平面转动和垂直转动的思路吗!图形是否也可以?