⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000001.htm

📁 水木清华关于C++Builder程序的代码
💻 HTM
📖 第 1 页 / 共 2 页
字号:
HDC&nbsp;hdc,&nbsp;//&nbsp;device&nbsp;context&nbsp;handle&nbsp;&nbsp;<BR>int&nbsp;nXEnd,&nbsp;//&nbsp;x-coordinate&nbsp;of&nbsp;line's&nbsp;ending&nbsp;point&nbsp;&nbsp;<BR>int&nbsp;nYEnd&nbsp;//&nbsp;y-coordinate&nbsp;of&nbsp;line's&nbsp;ending&nbsp;point&nbsp;&nbsp;<BR>);&nbsp;<BR>因此在C++Builder中,使用Casvas-&gt;LineTo(x,y)&nbsp;&nbsp;<BR>来绘图和呼叫标准SDK函式的LineTo((HDC)Canvas-&gt;Handle,x,y)&nbsp;是一样的。&nbsp;<BR> &nbsp;<BR>当然我不建议你在C++Builder中使用SDK语法来画图,但是我还是希望你对它&nbsp;<BR>们两者之间的关系有一些了解,因为C++Builder的VCL虽然在Canvas中已经把&nbsp;<BR>大部份的绘图函式实作出来,以物件的方式提供你使用,不过若是你要使用到&nbsp;<BR>Canvas未提供的绘图函式时,你就可以利用Canvas-&gt;Handle来做为传入SDK函&nbsp;<BR>式的叁数。&nbsp;<BR> &nbsp;<BR>XX-04&nbsp;TCanvas的TPen&nbsp;性质&nbsp;<BR> &nbsp;<BR>注:SDK加油站。&nbsp;<BR>在SDK中使用Pen的方式是利用SelectObject函式来达成。它传入两个叁数,&nbsp;<BR>一个是HDC值,它就是Canvas-&gt;Handle值,另一个则是HGDIOBJ值,它是一些&nbsp;<BR>绘图工具的通称,以Pen而言,它就是HPEN值,同时也是Pen-&gt;Handle值。&nbsp;<BR> &nbsp;<BR>HGDIOBJ&nbsp;SelectObject(&nbsp;<BR>HDC&nbsp;hdc,&nbsp;//&nbsp;handle&nbsp;of&nbsp;device&nbsp;context&nbsp;&nbsp;<BR>HGDIOBJ&nbsp;hgdiobj&nbsp;//&nbsp;handle&nbsp;of&nbsp;object&nbsp;&nbsp;<BR>);&nbsp;<BR> &nbsp;<BR> &nbsp;<BR>现在开始,我要为你一一介绍在TCanvas所使用的绘图工具。首先为你介绍的是&nbsp;<BR>TPen性质。在往下进行之前,我先简单说明C++&nbsp;&nbsp;<BR>Builder的命名惯例,在C++Builder中,对於资料型别或是物件类别一般是以&nbsp;<BR>大写T&nbsp;&nbsp;<BR>为启始字元,而对於物件本身则以不包含大写T的名称为名,如TCanvas及TPen&nbsp;<BR>为类别名,而Canvas及Pen则是实际的物件,在本书中我会依情况交互使用之。&nbsp;<BR> &nbsp;<BR>TPen是你在Canvas画线所使用的”笔”,因此所有和线条有关的绘图函式都会&nbsp;<BR>受TPen影响,如LineTo,Ellipse,Polygon,PolyLine,Rectangle等函式都&nbsp;<BR>使用”笔”来画线,基本上我们可以将这些绘图工具归类为向量式的绘图工具,&nbsp;<BR>所有的向量式绘图工具都使用Pen来进行画线的动作。&nbsp;<BR> &nbsp;<BR>你可以利用Canvas.Pen来存取Pen&nbsp;,藉此修改Pen的性质,这些性质包含Color,&nbsp;<BR>Width,Style,以及&nbsp;&nbsp;<BR>Mode。你可以修改上述性质来达到改变线条颜色及样式的目的。&nbsp;<BR> &nbsp;<BR>XX-04-01&nbsp;Color性质&nbsp;<BR> &nbsp;<BR>Color性质可以定出笔的颜色。在C++&nbsp;&nbsp;<BR>Builder中提供了许多颜色的预定常数,这些预设颜色都以cl(cl代表color)&nbsp;<BR>为启始字元命名。例如clRed代表红色,,clBlue代表蓝色,clGreen代表绿色&nbsp;<BR>等等。另外C++&nbsp;&nbsp;<BR>Builder也将Windows的基本颜色以常数定义,如clWindow及clMenu分别代表&nbsp;<BR>Window及Menu的颜色。以下我列出部份C++&nbsp;&nbsp;<BR>Builder定义的颜色常数,你不必完全记住它,只要有些印象即可,若是无法记&nbsp;<BR>住,可以直接使用线上辅助说明,不过记住一些常用的常数会加快你程式写作的&nbsp;<BR>效率。&nbsp;<BR> &nbsp;<BR>颜色常数说明&nbsp;<BR>值&nbsp;意义&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clBlack&nbsp;黑色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clMaroon&nbsp;茶色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clGreen&nbsp;绿色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clOlive&nbsp;橄榄绿&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clNavy&nbsp;海蓝色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clPurple&nbsp;紫色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clTeal&nbsp;青紫色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clGray&nbsp;灰色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clSilver&nbsp;银色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clRed&nbsp;红色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clLime&nbsp;灰绿色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clBlue&nbsp;蓝色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clFuchsia&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clAqua&nbsp;淡绿青色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clWhite&nbsp;白色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clBackground&nbsp;Window背景色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clActiveCaption&nbsp;活动视窗的标题色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clInactiveCaption&nbsp;非活动视窗的标题色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clMenu&nbsp;Menu的颜色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clWindow&nbsp;Windows的背景色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clWindowFrame&nbsp;Window&nbsp;Frame的颜色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clMenuText&nbsp;Menu文字的颜色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clWindowText&nbsp;Window内文字的颜色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clCaptionText&nbsp;标题文字的颜色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clActiveBorder&nbsp;活动视窗的边界颜色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clInactiveBorder&nbsp;非活动视窗的边界颜色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clAppWorkSpace&nbsp;视窗工作区域的颜色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clHighlight&nbsp;高亮度Windows颜色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clHightlightText&nbsp;被选取文字的颜&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clBtnFace&nbsp;Button颜色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clBtnShadow&nbsp;Button影子颜色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clGrayText&nbsp;灰色文字色&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clBtnText&nbsp;Button内文字颜 &nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clBtnHighlight&nbsp;Button高亮度颜色&nbsp;<BR>&nbsp;<BR> &nbsp;<BR>以下的程式会将画笔的颜色设为蓝色&nbsp;<BR>Canvas-&gt;Pen-&gt;Color=clBlue;&nbsp;<BR> &nbsp;<BR>另外我们也可以利用以下的叙述来改变颜色&nbsp;<BR> &nbsp;<BR>Canvas-&gt;Pen-&gt;Color&nbsp;=&nbsp;TColor(RGB(192,192,192));&nbsp;<BR> &nbsp;<BR>注:RGB是Windows系统用以表示颜色的方式,它们分别代表红色(Red)、绿色&nbsp;<BR>(Green)及蓝色(Blue)。使用RGB时我们可以传入分别代表红、绿、蓝三种颜&nbsp;<BR>色的强度值,此时它会传回Windows系统的对应值。例如RGB(255,0,0)&nbsp;&nbsp;<BR>的传回值是代表红色,所以Tcolor(RGB(255,0,0))&nbsp;所代表的意义和clRed是相&nbsp;<BR>同的。你也可以利用ColorToRGB来将clRed等C++&nbsp;&nbsp;<BR>Builder定义的常数值传换成Windows系统所代表的RGB颜色。&nbsp;<BR> &nbsp;<BR>XX-04-02&nbsp;Style性质&nbsp;<BR> &nbsp;<BR>Style性质是用来改变画笔的型式,在C++&nbsp;Builder中定义了以下几种画笔型式。&nbsp;<BR>它们都以ps为启始字串&nbsp;(ps代表Pen&nbsp;Style)。&nbsp;<BR> &nbsp;<BR>psClear&nbsp;清除线&nbsp;<BR>psDash&nbsp;Dash线&nbsp;<BR>psDashDot&nbsp;Dash和Dot交替线&nbsp;<BR>psDashDotDot&nbsp;Dash和一堆Dot线&nbsp;<BR>psSolid&nbsp;实心线&nbsp;<BR> &nbsp;<BR>&nbsp;<BR>图XX-05&nbsp;<BR> &nbsp;<BR>XX-04-03&nbsp;Width性质&nbsp;<BR> &nbsp;<BR>笔的Width顾名思义,就是指笔的粗细,我在前面几个程式都已使用过了,所以&nbsp;<BR>在此不再细述。&nbsp;<BR> &nbsp;<BR>XX-04-04&nbsp;Mode性质&nbsp;<BR> &nbsp;<BR>Pen的Mode性质是用以决定Pen如何画在Canvas上,下表列出我们可以使用的&nbsp;<BR>Mode,它们都以pm为启始字元,代表Pen&nbsp;Mode。&nbsp;<BR> &nbsp;<BR>Mode&nbsp;点的颜色&nbsp;<BR>pmBlack&nbsp;恒为黑色&nbsp;<BR>pmWhite&nbsp;恒为白色.&nbsp;<BR>pmNop&nbsp;不变色。&nbsp;<BR>pmNot&nbsp;萤幕的反相色。&nbsp;<BR>pmCopy&nbsp;使用Color性质的颜色(内定值).&nbsp;<BR>pmNotCopy&nbsp;使用Color性质的反相色。&nbsp;<BR>pmMergePenNot&nbsp;Color和萤幕反相的&nbsp;Merge。&nbsp;<BR>pmMaskPenNot&nbsp;Color和萤幕反相的&nbsp;Mask。&nbsp;<BR>pmMergeNotPen&nbsp;Color反相和萤幕的&nbsp;Merge。&nbsp;<BR>pmMaskNotPen&nbsp;Color反相和萤幕的&nbsp;Mask。&nbsp;<BR>pmMerge&nbsp;Color和萤幕的&nbsp;Merge。&nbsp;<BR>pmNotMerge&nbsp;pmMerget的相反。&nbsp;<BR>pmMask&nbsp;Color和萤幕的&nbsp;Mask。&nbsp;<BR>pmNotMask&nbsp;pmMask的反相。&nbsp;<BR>pmXor&nbsp;Color和萤幕的Xor运算。&nbsp;<BR>pmNotXor&nbsp;pmXor的相反。&nbsp;<BR> &nbsp;<BR>Pen-&gt;Mode的预设值是pmCopy,也就是说,它会用Color性质的颜色来画图。在&nbsp;<BR>大部份情况下,你会使用这个预设值。不过若你要再针对笔做细部控制时,你就&nbsp;<BR>必须对其他Mode有一些初步的了解。&nbsp;<BR> &nbsp;<BR>另一个常用的Mode是&nbsp;&nbsp;<BR>pmXor,它是用来让Pen-&gt;Color和萤幕颜色做XOR运算,XOR运算最重要的特徵&nbsp;<BR>是:和同一个值做两次XOR运算时,会恢复原来的值。&nbsp;<BR>因此我们可以用XOR模式在同一位置画两次线,将原来的线擦掉。在本书的绘图&nbsp;<BR>范例中就使用pmXor来处理滑鼠的画线,用以将上次的线条清除掉。同时XOR运&nbsp;<BR>算也是一种最简单的编码演算法,不过这不在本书讨论范围内,因此我就不再多&nbsp;<BR>说了。&nbsp;<BR> &nbsp;<BR>XX-05&nbsp;TCanvas的TBrush性质&nbsp;<BR> &nbsp;<BR>TBrush可用来在Canvas的特定区域下着色。和TPen不同的是,TBrush可以用&nbsp;<BR>不同的颜色、样式、及图案来填满Canvas的特定区域,而TPen则是用来在Canvas&nbsp;<BR>上绘线。&nbsp;<BR> &nbsp;<BR>XX-04-01&nbsp;Style性质&nbsp;<BR> &nbsp;<BR>TBrush共有bsSolid,&nbsp;bsClear,&nbsp;bsHorizontal,&nbsp;bsVertical,&nbsp;bsFDiagonal,&nbsp;&nbsp;<BR>bsBDiagonal,&nbsp;&nbsp;<BR>bsCross,&nbsp;bsDiagCross等几种&nbsp;Style,你可以由图XX-06看出这几种不同的笔&nbsp;<BR>刷型式有何不同。&nbsp;<BR> &nbsp;<BR>&nbsp;<BR>图XX-06&nbsp;&nbsp;<BR> &nbsp;<BR>XX-05&nbsp;TCanvas的Pixels性质&nbsp;<BR> &nbsp;<BR>Pixel性质,是一个二维的颜色阵列,它让你可以直接存取Canvas内的任何一&nbsp;<BR>点。你可以利用和一般阵列相同的存取方法来取得Pixel内的值。此阵列的最大&nbsp;<BR>索引值是X,Y的值。&nbsp;<BR> &nbsp;<BR>除非必要,否则不要以Pixel来绘图,它是最慢的绘图方法。&nbsp;<BR> &nbsp;<BR>XX-06&nbsp;TCanvas的Font性质&nbsp;<BR> &nbsp;<BR>Font性质是用来控制画在Canvas上的文字所使用的字形。你可以利用改变&nbsp;&nbsp;<BR>Color,Name,Size,Style的方式来分别改变字形的颜色、使用的字形名称、&nbsp;<BR>字形大小及字形的样式。&nbsp;<BR> &nbsp;<BR>XX-06-1&nbsp;TFont的Color、Name、Size性质。&nbsp;<BR> &nbsp;<BR>TFont的Color性质和其他元件的Color性质相同。&nbsp;<BR>Name性质表示使用字形的名称。你可以用以下的方式来设定字形名称。&nbsp;<BR>Canvas-&gt;Font-&gt;Name=”标楷体“;&nbsp;<BR>Size性质表示字形的大小。&nbsp;<BR> &nbsp;<BR>XX-06-02&nbsp;TFont的Style性质。&nbsp;<BR> &nbsp;<BR>Style性质用以表示字型的样式。它包含以下几种样式:&nbsp;<BR> &nbsp;<BR>fsBold&nbsp;粗体&nbsp;<BR>fsItalic&nbsp;斜体&nbsp;<BR>fsUnderline&nbsp;底线&nbsp;<BR>fsStrikeOut&nbsp;穿越文字的水平直线。&nbsp;<BR> &nbsp;<BR>&lt;&lt;&lt;&nbsp;以下待续&nbsp;&gt;&gt;&gt;&nbsp;<BR> &nbsp;<BR> &nbsp;<BR> &nbsp;<BR> &nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;面对未知的世界因恐惧而发抖&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;<BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;bbs.net.tsinghua.edu.cn·[FROM:&nbsp;166.111.49.104]&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -