用DELPHI中Canvas特性开发图形软件
2008-04-09 04:17:46来源:互联网 阅读 ()
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com表 1--1
Canvas方法 CDC方法 功能
Arc Arc 画一个椭圆弧
Chord Chord 画一根玄。
CopyRect 拷贝指定矩形区域中图象到指定矩形
Draw BitBlt 拷贝位图
Ellipse Ellipse 画椭圆
FillRect PaintRgn 使用刷子填充一个又一个矩型
FloodFill FloodFill 用当前刷子填充区域
FrameRect FrameRect 画一个矩形框
Lineto Lineto 画线到
Moveto Moveto 移 到
Pie Pie 画扇形
Polygon Polygon 画多边形
PolyLine PolyLine 画多根相连的线
Rectangle Rectangle 画一个实心矩形
RoundRect RoundRect 画一个圆角的矩形
StretchDraw StretchBlt 从源图象中
移动图象到指定矩形
TextWidth GetCharWidth 返回字符宽
TextOut TextOut 在指定坐标写字
TextRect ExtTextOut 在制定矩形中写字
procedureTSDIAppForm.FormPaint(Sender:TObject);
begin
canvas.FillRect(rect);{清空桌面画布}
withSDIappformdo
posx:=clientwidthdiv2;
posy:=clientheightdiv2;{确定客户区中心点}
casedetectIof
1:
begin
setpenstate;
canvas.Ellipse(posx-50,posy-50,posx 50,posy 50);
//penwidth:=oldwidth;
end;{在客户区中心点画圆}
2:
begin
setpenstate;
canvas.MoveTo(posx-60,posy-60);
canvas.LineTo(posx 60,posy 60);
//penwidth:=oldwidth;
end;{在客户区画直线}
3:
begin
fposx:=trunc(50*cos(pi/6));
fposy:=trunc(50*sin(pi/6));
setpenstate;
Canvas.Polygon([Point(posx-fposy,posy-fposx),
Point(posx fposy,posy-fposx),
Point(posx 50,posy),Point(posx fposy,posy fposx),
point(posx-fposy,posy fposx),point(posx-50,posy)]);
//penwidth:=oldwidth;
end;{在客户区中心点画多边形}
4:
begin
setpenstate;
canvas.RoundRect(posx-100,posy-50,posx 100,posy 50,
20,20);
end;{在客户区中心点画带圆角的矩形}
5:
begin
setpenstate;
sdiappform.Canvas.Brush.Color:=clred;
canvas.Rectangle(posx-100,posy-50,posx 100,posy 50);
sdiappform.Canvas.Brush.Color:=bcolor;
end{在客户区中心点用红色刷子画矩形}
else
begin
canvas.Font:=formfont;
canvas.TextOut(30,posy,str);
end;
end;{写字}
end;
上面程序中出现的变量在事件OnCreate中初始化。
procedureTSDIAppForm.FormCreate(Sender:TObject);
begin
str:=;{要写在画布上的字符串}
formfont:=canvas.font;{字体和大小}
detectI:=0;{确定画布上出现何种图形的参数}
rect:=sdiappform.ClientRect;{客户区矩形}
oldwidth:=sdiappform.Canvas.Pen.Width;{最初画笔宽度}
penwidth:=oldwidth;{画笔宽度}
penstyle:=sdiappform.Canvas.Pen.Style;{画笔类型}
pencolor:=sdiappform.Canvas.Pen.Color;{画笔颜色}
bcolor:=sdiappform.Canvas.Brush.Color;{画刷颜色}
end;
procedureTSDIAppForm.setpenstate;
begin
withsdiappform.Canvas.Pendo
begin
color:=pencolor;
style:=penstyle;
width:=penwidth;
end;
end;
procedureTSDIAppForm.LineColor1Click(Sender:TObject);
begin
ifcolordialog1.Executethen
begin
pencolor:=colordialog1.Color;
SdiAppForm.Canvas.Pen.Style:=psInsideFrame;
ifpenwidth$#@60;1then
SdiAppForm.Canvas.Pen.Width:=3;
SdiAppForm.Canvas.Pen.Color:=pencolor;
invalidate;
end;
end;{完成画笔颜色设定}
//{完成画笔笔形设定}
procedureTSDIAppForm.Solid1Click(Sender:TObject);
begin
penStyle:=pssolid;
invalidate;
end;
procedureTSDIAppForm.Dot1Click(Sender:TObject);
begin
PenStyle:=psdot;
invalidate;
end;
procedureTSDIAppForm.Dash1Click(Sender:TObject);
begin
penStyle:=psdash;
invalidate;
end;
procedureTSDIAppForm.DashDot1Click(Sender:TObject);
begin
PenStyle:=psdashdot;
invalidate;
end;
procedureTSDIAppForm.DashDotDot1Click(Sender:TObject);
begin
penStyle:=psdashdotdot;
invalidate;
end;
//////////////////////////////////
procedureTSDIAppForm.RoundRect1Click(Sender:TObject);
begin
detectI:=4;
invalidate;
end;
procedureTSDIAppForm.Rectangle1Click(Sender:TObject);
begin
detectI:=5;
invalidate;
end;
procedureTSDIAppForm.Helloworld1Click(Sender:TObject);
begin
detectI:=0;
str:=helloworld!!;
Invalidate;
end;
procedureTSDIAppForm.Imateacher1Click(Sender:TObject);
begin
detectI:=0;
str:=Iamateacher!!;
Invalidate;
end;
procedureTSDIAppForm.Fonts1Click(Sender:TObject);
begin
iffontdialog1.Executethen
begin
detectI:=0;
formfont:=fontdialog1.font;
invalidate;
end;
end;{设定字体和大小}
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:自动隐藏的声象按钮
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash