📄 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 + -