核心提示:以往,我们想得到空心字,一般都是使用华文彩云的字体或者用各种画图软件画出我们需要的效果,然后以图形的方式显示。 我今天在这里向大家展示一种用编程实现的方法。道理很简单。我们先得到要写的字的轮廓,然后...
以往,我们想得到空心字,一般都是使用华文彩云的字体或者用各种画图软件画出我们需要的效果,然后以图形的方式显示。
我今天在这里向大家展示一种用编程实现的方法。道理很简单。我们先得到要写的字的轮廓,然后沿着轮廓划线,这样空心字就出来了。看看下面的程序吧。很简单,代码还不到十行就可以做完。
以下程序在DELPHI6.0+Win ME下编程通过。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{Private declarations}
public
{Public declarations}
end;
var
Form1: TForm1;
implementation
{$R*.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Canvas.Font.Name:= '幼圆';
//如果考虑到通用性,最好选用True Type Font
Canvas.Font.Size:= 72;
Canvas.Font.Style:=[fsBold];//你可以选择其他方式,不过,粗体是必需的,这样效果才好
BeginPath(Canvas.Handle); //准备得到Canvas上绘制的轮廓
Canvas.TextOut(20,40,'我爱电脑报');
EndPath(Canvas.Handle); //结束
Canvas.Pen.Color:= clRed;
StrokePath(Canvas.Handle); //将得到的轮廓画到Canvas上
end;
end.
效果如
不错吧。但是,外边怎么还有个方框?
好吧,我们再来去掉它。在beginpath后加上一句
SetBkMode(Canvas.Handle,TRANSPARENT);
这次好了吧?我们还可以做一些改进。比如说,我们可以在空心里填上其他的颜色。先设置好刷子,加上一句代码就可以了。
Canvas.Brush.Color:=clYellow; //设置填充色
再用StrokeAndFillPath函数来替换StrokePath函数
StrokeAndFillPath(canvas.handle);