📄 chap08.htm
字号:
<FONT SIZE=2><P>clBtnHighlight	 Button</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>高亮度颜色</FONT></TD></TR></TABLE><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2><P> </P><P>以下的程式会将画笔的颜色设为蓝色</P></FONT><FONT SIZE=2><P>Canvas->Pen->Color=clBlue;</P><P> </P></FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2><P>另外我们也可以利用以下的叙述来改变颜色</P><P> </P></FONT><FONT SIZE=2><P>Canvas->Pen->Color = TColor(RGB(192,192,192));</P><P> </P></FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2><P>注:</FONT><FONT SIZE=2>RGB</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>是</FONT><FONT SIZE=2>Windows</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>系统用以表示颜色的方式,它们分别代表红色(</FONT><FONT SIZE=2>Red</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>)、绿色(</FONT><FONT SIZE=2>Green</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>)及蓝色(</FONT><FONT SIZE=2>Blue</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>)。使用</FONT><FONT SIZE=2>RGB</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>时我们可以传入分别代表红、绿、蓝叁种颜色的强度值,此时它会传回</FONT><FONT SIZE=2>Windows</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>系统的对应值。例如</FONT><FONT SIZE=2>RGB(255,0,0) </FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>的传回值是代表红色,所以</FONT><FONT SIZE=2>Tcolor(RGB(255,0,0)) </FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>所代表的意义和</FONT><FONT SIZE=2>clRed</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>是相同的。你也可以利用</FONT><FONT SIZE=2>ColorToRGB</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>来将</FONT><FONT SIZE=2>clRed</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>等</FONT><FONT SIZE=2>C++ Builder</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>定义的常数值传换成</FONT><FONT SIZE=2>Windows</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>系统所代表的</FONT><FONT SIZE=2>RGB</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>颜色。</P><P> </P></FONT><FONT SIZE=2><P>XX-04-02	Style</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质</P><P> </P></FONT><FONT SIZE=2><P>Style</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质是用来改变画笔的型式,在</FONT><FONT SIZE=2>C++ Builder</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>中定义了以下几种画笔型式。它们都以</FONT><FONT SIZE=2>ps</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>为启始字串</FONT><FONT SIZE=2> (ps</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>代表</FONT><FONT SIZE=2>Pen Style)</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>。</P><P> </P></FONT><FONT SIZE=2><P>psClear </FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>清除线</P></FONT><FONT SIZE=2><P>psDash Dash</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>线</P></FONT><FONT SIZE=2><P>psDashDot Dash</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>和</FONT><FONT SIZE=2>Dot</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>交替线</P></FONT><FONT SIZE=2><P>psDashDotDot Dash</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>和一堆</FONT><FONT SIZE=2>Dot</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>线</P></FONT><FONT SIZE=2><P>psSolid </FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>实心线</P><P> </P></FONT><FONT SIZE=2><P> </FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2><IMG SRC="Image5.gif" WIDTH=445 HEIGHT=307></P><P>图</FONT><FONT SIZE=2>XX-05</P></FONT><U><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2><P> </P></U></FONT><FONT SIZE=2><P>XX-04-03	Width</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质</P><U><P> </P></U><P>笔的</FONT><FONT SIZE=2>Width</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>顾名思义,就是指笔的粗细,我在前面几个程式都已使用过了,所以在此不再细述。</P><P> </P></FONT><FONT SIZE=2><P>XX-04-04	Mode</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质</P><P> </P></FONT><FONT SIZE=2><P>Pen</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>的</FONT><FONT SIZE=2>Mode</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质是用以决定</FONT><FONT SIZE=2>Pen</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>如何画在</FONT><FONT SIZE=2>Canvas</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>上,下表列出我们可以使用的</FONT><FONT SIZE=2>Mode</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>,它们都以</FONT><FONT SIZE=2>pm</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>为启始字元,代表</FONT><FONT SIZE=2>Pen Mode</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>。</P><P> </P></FONT><FONT SIZE=2><P>Mode			</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>点的颜色</P></FONT><FONT SIZE=2><P>pmBlack			</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>恒为黑色</P></FONT><FONT SIZE=2><P>pmWhite			</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>恒为白色</FONT><FONT SIZE=2>.</P><P>pmNop			</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>不变色。</P></FONT><FONT SIZE=2><P>pmNot			</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>萤幕的反相色。</P></FONT><FONT SIZE=2><P>pmCopy			</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>使用</FONT><FONT SIZE=2>Color</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质的颜色(内定值)</FONT><FONT SIZE=2>.</P><P>pmNotCopy		</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>使用</FONT><FONT SIZE=2>Color</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质的反相色。</P></FONT><FONT SIZE=2><P>pmMergePenNot	Color</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>和萤幕反相的</FONT><FONT SIZE=2> Merge</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>。</P></FONT><FONT SIZE=2><P>pmMaskPenNot	Color</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>和萤幕反相的</FONT><FONT SIZE=2> Mask</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>。</P></FONT><FONT SIZE=2><P>pmMergeNotPen	Color</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>反相和萤幕的</FONT><FONT SIZE=2> Merge</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>。</P></FONT><FONT SIZE=2><P>pmMaskNotPen	Color</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>反相和萤幕的</FONT><FONT SIZE=2> Mask</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>。</P></FONT><FONT SIZE=2><P>pmMerge			Color</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>和萤幕的</FONT><FONT SIZE=2> Merge</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>。</P></FONT><FONT SIZE=2><P>pmNotMerge		pmMerget</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>的相反。</P></FONT><FONT SIZE=2><P>pmMask			Color</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>和萤幕的</FONT><FONT SIZE=2> Mask</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>。</P></FONT><FONT SIZE=2><P>pmNotMask		pmMask</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>的反相。</P></FONT><FONT SIZE=2><P>pmXor			Color</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>和萤幕的</FONT><FONT SIZE=2>Xor</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>运算。</P></FONT><FONT SIZE=2><P>pmNotXor		pmXor</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>的相反。</P><P> </P></FONT><FONT SIZE=2><P>Pen->Mode</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>的预设值是</FONT><FONT SIZE=2>pmCopy</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>,也就是说,它会用</FONT><FONT SIZE=2>Color</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质的颜色来画图。在大部份情况下,你会使用这个预设值。不过若你要再针对笔做细部控制时,你就必须对其他</FONT><FONT SIZE=2>Mode</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>有一些初步的了解。</P><P> </P><P>另一个常用的</FONT><FONT SIZE=2>Mode</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>是</FONT><FONT SIZE=2> pmXor</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>,它是用来让</FONT><FONT SIZE=2>Pen->Color</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>和萤幕颜色做</FONT><FONT SIZE=2>XOR</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>运算,</FONT><FONT SIZE=2>XOR</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>运算最重要的特徵是:和同一个值做两次</FONT><FONT SIZE=2>XOR</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>运算时,会恢复原来的值。</P><P>因此我们可以用</FONT><FONT SIZE=2>XOR</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>模式在同一位置画两次线,将原来的线擦掉。在本书的绘图范例中就使用</FONT><FONT SIZE=2>pmXor</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>来处理滑鼠的画线,用以将上次的线条清除掉。同时</FONT><FONT SIZE=2>XOR</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>运算也是一种最简单的编码演算法,不过这不在本书讨论范围内,因此我就不再多说了。</P><P> </P></FONT><FONT SIZE=2><P>XX-05	TCanvas</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>的</FONT><FONT SIZE=2>TBrush</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质</P><P> </P></FONT><FONT SIZE=2><P>TBrush</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>可用来在</FONT><FONT SIZE=2>Canvas</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>的特定区域下着色。和</FONT><FONT SIZE=2>TPen</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>不同的是,</FONT><FONT SIZE=2>TBrush</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>可以用不同的颜色、样式、及图案来填满</FONT><FONT SIZE=2>Canvas</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>的特定区域,而</FONT><FONT SIZE=2>TPen</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>则是用来在</FONT><FONT SIZE=2>Canvas</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>上绘线。</P><P> </P></FONT><FONT SIZE=2><P>XX-04-01	Style</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质</P><P> </P></FONT><FONT SIZE=2><P>TBrush</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>共有</FONT><FONT SIZE=2>bsSolid, bsClear, bsHorizontal, bsVertical, bsFDiagonal, bsBDiagonal, bsCross, bsDiagCross</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>等几种</FONT><FONT SIZE=2> Style</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>,你可以由图</FONT><FONT SIZE=2>XX-06</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>看出这几种不同的笔刷型式有何不同。</P><P> </P><P><IMG SRC="Image6.gif" WIDTH=459 HEIGHT=368></P><P>图</FONT><FONT SIZE=2>XX-06 </P><P> </P><P>XX-05	TCanvas</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>的</FONT><FONT SIZE=2>Pixels</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质</P><P> </P></FONT><FONT SIZE=2><P>Pixel</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质,是一个二维的颜色阵列,它让你可以直接存取</FONT><FONT SIZE=2>Canvas</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>内的任何一点。你可以利用和一般阵列相同的存取方法来取得</FONT><FONT SIZE=2>Pixel</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>内的值。此阵列的最大索引值是</FONT><FONT SIZE=2>X,Y</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>的值。</P><P> </P><P>除非必要,否则不要以</FONT><FONT SIZE=2>Pixel</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>来绘图,它是最慢的绘图方法。</P><P> </P></FONT><FONT SIZE=2><P>XX-06	TCanvas</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>的</FONT><FONT SIZE=2>Font</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质</P><P> </P></FONT><FONT SIZE=2><P>Font</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质是用来控制画在</FONT><FONT SIZE=2>Canvas</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>上的文字所使用的字形。你可以利用改变</FONT><FONT SIZE=2> Color</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>,</FONT><FONT SIZE=2>Name</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>,</FONT><FONT SIZE=2>Size</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>,</FONT><FONT SIZE=2>Style</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>的方式来分别改变字形的颜色、使用的字形名称、字形大小及字形的样式。</P><P> </P></FONT><FONT SIZE=2><P>XX-06-1		TFont</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>的</FONT><FONT SIZE=2>Color</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>、</FONT><FONT SIZE=2>Name</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>、</FONT><FONT SIZE=2>Size</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质。</P><P> </P></FONT><FONT SIZE=2><P>TFont</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>的</FONT><FONT SIZE=2>Color</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质和其他元件的</FONT><FONT SIZE=2>Color</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质相同。</P></FONT><FONT SIZE=2><P>Name</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质表示使用字形的名称。你可以用以下的方式来设定字形名称。</P></FONT><FONT SIZE=2><P>Canvas->Font->Name=”</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>标楷体</FONT><FONT SIZE=2>“;</P><P>Size</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质表示字形的大小。</P><P> </P></FONT><FONT SIZE=2><P>XX-06-02	TFont</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>的</FONT><FONT SIZE=2>Style</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质。</P><P> </P></FONT><FONT SIZE=2><P>Style</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>性质用以表示字型的样式。它包含以下几种样式:</P><P> </P></FONT><FONT SIZE=2><P>fsBold		</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>粗体</P></FONT><FONT SIZE=2><P>fsItalic		</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>斜体</P></FONT><FONT SIZE=2><P>fsUnderline	</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>底线</P></FONT><FONT SIZE=2><P>fsStrikeOut	</FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>穿越文字的水平直线。</P><P> </P></FONT><FONT SIZE=2><P><<< </FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2>以下待续</FONT><FONT SIZE=2> 	>>></P><P> </P><P> </P><P> </P></FONT><FONT FACE="新细明体" LANG="ZH-TW" SIZE=2><P> </P></FONT></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -