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

📄 subject_41849.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:41849 发表者:hiha 发表日期:2003-05-29 22:49:33
<br>主题:画图的问题
<br>内容:我在动态画曲线时,屏幕上老是有曲线经过的轨迹。我用了SetROP2(R2_NOT),可是老是有些残余痕迹不知道怎么回事?<BR>void CDrawerView::OnLButtonDown(UINT nFlags, CPoint point) <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;// TODO: Add your message handler code here and/or call default<BR>&nbsp;&nbsp;&nbsp;&nbsp;CDC* pDC=GetDC();<BR>&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;SelectStockObject (NULL_BRUSH);<BR>&nbsp;&nbsp;&nbsp;&nbsp;switch(m_step)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;case 0:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Startp=m_Endp=point;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_step++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;case 1:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Endp=point;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_step=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_bLine=TRUE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DrawLine(pDC,m_Startp,m_Endp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;default:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;ReleaseDC(pDC);<BR>&nbsp;&nbsp;&nbsp;&nbsp;CView::OnLButtonDown(nFlags, point);<BR>}<BR><BR>void CDrawerView::DrawLine(CDC *pDC, CPoint start, CPoint end)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pDC-&gt;MoveTo (start);<BR>&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;LineTo (end);<BR>}<BR><BR>void CDrawerView::OnMouseMove(UINT nFlags, CPoint point) <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;// TODO: Add your message handler code here and/or call default<BR>&nbsp;&nbsp;&nbsp;&nbsp;CDC* pDC=GetDC();<BR>&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;SelectStockObject (NULL_BRUSH);<BR>&nbsp;&nbsp;&nbsp;&nbsp;int preMode=pDC-&gt;SetROP2 (R2_NOT);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (!m_bLine&amp;&amp;m_step==1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPoint prep,curp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prep=m_Endp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curp=point;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DrawLine(pDC,m_Startp,prep);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DrawLine(pDC,m_Startp,curp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Endp=point;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;SetROP2 (preMode);<BR>&nbsp;&nbsp;&nbsp;&nbsp;ReleaseDC(pDC);<BR>&nbsp;&nbsp;&nbsp;&nbsp;CView::OnMouseMove(nFlags, point);<BR>}<BR><BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:mimibaby 回复日期:2003-05-30 18:47:31
<br>内容:你要刷新啊!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:思考者 回复日期:2003-05-30 19:40:49
<br>内容:加一个什么,Invalidate()什么的,<BR>或InvalidateRect(NULL,FALSE)什么的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:hiha 回复日期:2003-05-30 19:54:19
<br>内容:各位老大,麻烦具体点,我试过Invalidate()了,闪烁的厉害。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:mimibaby 回复日期:2003-05-31 12:33:41
<br>内容:那就用刷新局部啊:<BR>InvalidateRect<BR>看还闪吗?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:radargroup 回复日期:2003-05-31 15:51:16
<br>内容:你在论坛搜索中打一个“闪烁”查一下就行了。<BR>主要是要将图先画在内存中,再画出来,闪烁的关键是重画了白背景。<BR>但为了提高程序的执行效率,你还应该做一个裁切区域,用invalidaterect()来刷新。<BR>具体的方法你自己看。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:fenghan 回复日期:2003-05-31 16:41:10
<br>内容:要画动态曲线,重要的是察掉前一条曲线,可以在画图函数中考虑这一点。至于图象闪烁,我想如果只是画曲线的话是应该不会察觉得,就看你是用什么方法做的了。<BR>你两次选刷子是为什么?另外,在case 1:m_Endp=point;m_step=-1;,那不是只能画一次了,看看你的程序好像没什么问题,等我调一调。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:心刚 回复日期:2003-05-31 22:11:58
<br>内容:&nbsp;&nbsp; 试试用位图的方法,先把要画的图形实时的放入内存中,再调用Invalidate,在<BR>OnPain函数中把内存中的图形显示到显示屏上
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:hiha 回复日期:2003-05-31 22:51:00
<br>内容:对,是只能画一次,我是想先弄个简单的看看。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:fenghan 回复日期:2003-06-02 15:02:28
<br>内容:你的程序我调了,没有问题。没有见到你说的现象,你自己再看看吧。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:hiha 回复日期:2003-06-02 18:07:48
<br>内容:我看了你的程序,在屏幕上会留下点的痕迹,跟我的一样,还是没找到问题。不过还是谢谢你了!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:fenghan 回复日期:2003-06-03 12:29:24
<br>内容:首先感谢你把分给我。但我的确在上传的那个程序里没有发现你所说的问题,这就比较奇怪了。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

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