📄 chap22.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
<title>简易绘图范例01</title>
<link rel="stylesheet" href="../../../include/style.css">
</head>
<body>
<p> <small><a href="../../../index.htm">首页</a> >> <a href="../../program.htm">程序设计</a>
>> <a href="../cbuilder.htm">C++ Builder</a> >> </small><font SIZE="2">图形程式设计基本观念·<font color="#000000">简易绘图范例01</font></font></p>
<font SIZE="2">
<p align="left"><!--webbot bot="ImageMap" rectangle=" (40,1) (71, 23) chap23.htm" rectangle=" (4,1) (36, 23) chap21.htm" src="../ch1/NextBack.gif" width="72" height="24" alt="NextBack.gif (743字节)" border="0" startspan --><MAP NAME="FrontPageMap"><AREA SHAPE="rect" COORDS="40,1,71,23" HREF="chap23.htm" alt="下一页" title="下一页"><AREA SHAPE="rect" COORDS="4,1,36,23" HREF="chap21.htm" alt="上一页" title="上一页"></MAP><a href="../../../_vti_bin/shtml.exe/program/C++/ch2/chap22.htm/map"><img ismap usemap="#FrontPageMap" border="0" height="24" alt="NextBack.gif (743字节)" src="../ch1/NextBack.gif" width="72"></a><!--webbot bot="ImageMap" endspan i-checksum="22956" --></p>
<p><font color="#FF0000">·简易绘图范例01</font></p>
</font>
<p><font SIZE="2">范例一的输出</font></p>
<p><font SIZE="2"><img SRC="Image1.gif" WIDTH="458" HEIGHT="344">图01</font></p>
<font SIZE="2">
<p>这个程式很简单,只是重复地画出几个图形,如此就组成了一个美丽且和谐的图形。我们来看看其关键性的绘图部份:</p>
<p>其中Ellipse为一个画椭圆的绘图函式。</p>
</font><font SIZE="1">
<p>void __fastcall Ellipse(int X1, int Y1, int X2, int Y2);</p>
<p>函式说明:</p>
<p>利用Ellipse可在Canvas上画出圆形或椭圆形.
其环绕矩形的左上角为座标为 (X1, Y1) 而右下角坐标为 (X2, Y2).
若是该矩形为正方形,则所绘之图形为圆形。.</p>
<p>当此椭圆形绘制时,使用Pen的值画出其外框,而使用Brush值填满其内部。</p>
<p>注: 在Windows 95下X1+X2,Y1+Y2及X1+X2+Y1+Y2的值皆不可超过 32768。</p>
</font><font SIZE="2">
<p>void __fastcall TForm1::FormPaint(TObject *Sender)</p>
<p>{</p>
<p> double AL,x1,y1,x2,y2;</p>
<p> int L=120;</p>
<p> for (int i=0; i<48; i++)</p>
<p> {</p>
<p> AL = i*M_PI/24;</p>
<p> x1 = L*cos(AL);</p>
<p> y1 = L*sin(AL);</p>
<p> x2 = x1+320;</p>
<p> y2 = -y1+240;</p>
<p> Canvas->Ellipse(x2-90,y2-90,x2+90,y2+90);</p>
<p> }</p>
<p>}</p>
<p>怎麽样?简单吧!这个程式只是做一些简单的数学运算,然後以视窗中心为准,画出48个图形而已。我在这个程式中没有用到任何的软体元件,只是以表格
(Form)做为显示的基台,由於表格中亦包含了Canvas性质,因此表示我们可以在上绘图。同时为了绘图的方便,我将表格的背景色调为黑色,并将适当地调整画笔的颜色及视窗的大小:</p>
<p>void __fastcall TForm1::FormCreate(TObject *Sender)</p>
<p>{</p>
<p> Width = 640;</p>
<p> Height = 480;</p>
<p> Canvas->Pen->Color = clTeal;</p>
<p> Canvas->Brush->Style = bsClear;</p>
<p>}</p>
<p>基本上以上的调整都可以用二种方式来达成,一种是在属性编辑器,另一种则是在程式执行时动态改变,上面的程式码就是在改变视窗的宽度及高度,并设定画笔及笔刷,我将画笔颜色设为clTeal并将笔刷型式设为bsClear,以避免填色的动作,画笔及笔刷的动作在後续单元中会详细介绍,在此你只要大略了解其动作即可。</p>
<p>程式输出时,其背景为黑色是因为我在属性编辑器设定了黑色的背景值</p>
<p align="right"><!--webbot bot="ImageMap" rectangle=" (40,1) (71, 23) chap23.htm" rectangle=" (0,0) (32, 22) chap21.htm" src="../ch1/NextBack.gif" width="72" height="24" alt="NextBack.gif (743字节)" border="0" startspan --><MAP NAME="FrontPageMap1"><AREA SHAPE="rect" COORDS="40,1,71,23" HREF="chap23.htm" alt="下一页" title="下一页"><AREA SHAPE="rect" COORDS="0,0,32,22" HREF="chap21.htm" alt="上一页" title="上一页"></MAP><a href="../../../_vti_bin/shtml.exe/program/C++/ch2/chap22.htm/map1"><img ismap usemap="#FrontPageMap1" border="0" height="24" alt="NextBack.gif (743字节)" src="../ch1/NextBack.gif" width="72"></a><!--webbot bot="ImageMap" endspan i-checksum="41324" --></p>
<p><small><a href="../../../index.htm">首页</a> >> <a href="../../program.htm">程序设计</a>
>> <a href="../cbuilder.htm">C++ Builder</a> >> </small>图形程式设计基本观念·<font color="#000000">简易绘图范例01</font></p>
</font>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -