?? chap34.htm
字號:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
<title>02-03滑鼠的處理的加強</title>
<link rel="stylesheet" href="../../../include/style.css">
</head>
<body>
<font SIZE="2">
<p><small><a href="../../../index.htm">首頁</a> >> <a href="../../program.htm">程序設計</a>
>> <a href="../cbuilder.htm">C++ Builder</a> >> </small><font>具體而微的繪圖程式</font>·02-03<font SIZE="2">滑鼠的處理的加強</font></p>
<p align="left"><!--webbot bot="ImageMap" rectangle="(40,1) (71, 23) chap35.htm" rectangle="(4,1) (36, 23) chap33.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="chap35.htm"><AREA SHAPE="RECT" COORDS="4, 1, 36, 23" HREF="chap33.htm"></MAP><a href="../../../_vti_bin/shtml.exe/program/C++/ch3/chap34.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="23253" --></p>
</font>
<p align="left"><font SIZE="2" color="#FF0000">·02-03滑鼠的處理的加強</font></p>
<font SIZE="2">
<p>前面的程式對於滑鼠的移動處理有部份考慮的不夠周詳,因為它在滑鼠移動時不分青紅皂白就將線畫在螢慕上,造成螢幕上的線條混亂,這并不是正規的處理方法,正確的處理方法應該如下:</p>
<p>
<font SIZE="2">(1) </font>滑鼠鍵按下時,將記錄滑鼠按下的旗標設為<font SIZE="2">True.</font>同時將該點記錄下來,謂之原點。
<ol START="2">
<li>滑鼠移動時,判斷滑鼠按下的旗標是否設為<font SIZE="2"> True</font>,若為<font SIZE="2"> True</font>,則移動至原點,并畫一條由原點至目前所在點的線。同時更新原點位置至目前所在之點。</li>
<li VALUE="3">滑鼠放開時,將記錄滑鼠按下的旗標設為<font SIZE="2">False</font>。</li>
</ol>
<p>以下就是關於叁個滑鼠事件的處理程式碼。</p>
<p>
<font SIZE="2">// </font>滑鼠按下的事件處理函式</p>
<p>
<font SIZE="2">// 1. </font>將旗標設為<font SIZE="2">True</font></p><p>
<font SIZE="2">// 2. </font>記錄原點位置</p>
<font SIZE="2">
<p>void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,</p>
</font>
<p><font SIZE="2">TShiftState Shift, int X, int Y)</font></p>
<p>{</p>
<p> m_bDraw = TRUE;</p>
<p> m_nOrgX=X;</p>
<p> m_nOrgY=Y;</p>
<p>}</p>
<p>
<font SIZE="2">// </font>滑鼠移動的事件處理函式</p>
<p>
<font SIZE="2">// 1. </font>判斷旗標是否為<font SIZE="2">True</font>。若是則進行以下動作。</p>
<p>
<font SIZE="2">// 2. </font>移動至原點。</p>
<p>
<font SIZE="2">// 3. </font>畫一條由原點至目前所在點的線條。</p>
<p>
<font SIZE="2">// 4. </font>更改原點位置。</p>
<font SIZE="2">
<p>void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,</p>
</font>
<p><font SIZE="2">int X, int Y)</font></p>
<p>{</p>
<p> if (m_bDraw)</p>
<p> {</p>
<p> Canvas->MoveTo(m_nOrgX,m_nOrgY);</p>
<p> Canvas->LineTo(X,Y);</p>
<p> m_nOrgX = X;</p>
<p> m_nOrgY = Y;</p>
<p> }</p>
<p>}</p>
<p>
<font SIZE="2">// </font>滑鼠放開的事件處理函式</p>
<p>
<font SIZE="2">// 1. </font>判斷旗標是否為<font SIZE="2">True</font>。若是則進行以下動作。</p>
<p>
<font SIZE="2">// 1. </font>將旗標設為<font SIZE="2"> False</font>。</p>
<p>
<font SIZE="2">// 2. </font>畫線并記錄原點位置(非必要)。</p>
<font SIZE="2">
<p>void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,</p>
</font>
<p><font SIZE="2">TShiftState Shift, int X, int Y)</font></p>
<p>{</p>
<p> if (m_bDraw)</p>
<p> {</p>
<p> m_bDraw=FALSE;</p>
<p> Canvas->MoveTo(m_nOrgX,m_nOrgY);</p>
<p> Canvas->LineTo(X,Y);</p>
<p> m_nOrgX = X;</p>
<p> m_nOrgY = Y;</p>
<p> }</p>
<p>}</p>
<p>將滑鼠事件處理函式做以上的修改之後,我們就完成了一個基本的涂鴉程式的雛形了。我將此表格的背景設為黑色,筆的狀態設為<font SIZE="2">2</font>單位寬度的紅色筆,就得到以下的輸出結果:</p>
<p><img SRC="Image10.gif" WIDTH="463" HEIGHT="356"></p>
<p align="right"><font SIZE="2"><!--webbot bot="ImageMap" rectangle="(40,1) (71, 23) chap35.htm" rectangle="(4,1) (36, 23) chap33.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="chap35.htm"><AREA SHAPE="RECT" COORDS="4, 1, 36, 23" HREF="chap33.htm"></MAP><a href="../../../_vti_bin/shtml.exe/program/C++/ch3/chap34.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="41707" --></font></p>
<p> <font SIZE="2"><small><a href="../../../index.htm">首頁</a> >> <a href="../../program.htm">程序設計</a>
>> <a href="../cbuilder.htm">C++ Builder</a> >> </small><font>具體而微的繪圖程式</font></font>·02-03<font SIZE="2">滑鼠的處理的加強</font></p>
</font>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -