利用mfc模仿画图程序中的问题 现在遇到的问题就是模仿鼠标移动时图像的动感,我查了一些资料,利用了CDC的SetROP2(R2_NOTXORPEN)把像素设置为“异或模式”,但是这样做的话,当鼠标移动到已经画好的图像时,会把原先的图像也擦掉... 所以现在想问一下有没有更加好的办法模仿鼠标移动时图像的动感,并且可以不影响原来已经画好的图像? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 自己在 OnPaint里面根据鼠标的位置绘制 不懂?我在OnMouseMove函数中发送消息WM_PAINT来调用OnPaint函数,这样子别说影响原先的图像了,连动感也没有了?贴一下我的代码void CGraphicView::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here if(m_bDraw) { //CClientDC dc(this); int nDrawMode = dc.SetROP2(R2_NOTXORPEN); DrawGraphics(&dc,m_cGph); dc.SetROP2(nDrawMode); m_cGph.m_ptEnd=m_ptOrigin; DrawGraphics(&dc,m_cGph); } OnPrepareDC(&dc); OnDraw(&dc); // Do not call CScrollView::OnPaint() for painting messages}void CGraphicView::OnMouseMove(UINT nFlags, CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 //if(m_bDraw) //{ // CClientDC dc(this); // int nDrawMode = dc.SetROP2(R2_NOTXORPEN); // DrawGraphics(&dc,m_cGph); // SendMessage(WM_PAINT); // dc.SetROP2(nDrawMode); // m_cGph.m_ptEnd=point; // DrawGraphics(&dc,m_cGph); //} if(m_bDraw) { UpdateWindow(); m_ptOrigin = point; } CScrollView::OnMouseMove(nFlags, point);} 第二次读取cookies读取不到 cdc* p =getdc();//局部变量p需要Release(p)吗 CSDN怎么了呀,老是提示登录, [求助]AccpetEx成功接收到连接后,获取客户端地址出错 基于对话框的应用程序,如何改变它的初始窗口大小和位置 关于电脑与单片机的串口连接问题。谢谢 ListView问题! 哪位大侠有利用。wininet api 实现Ftp 功能的例程 在线等待。 请教利用connect、send、recv等socket api实现Http访问的问题 怎么实现一个对话矿到另一个对话矿的数据传递?之没有人能搞定!! 如何设置代码页、字符集? 焦点切换问题
不懂?我在OnMouseMove函数中发送消息WM_PAINT来调用OnPaint函数,这样子别说影响原先的图像了,连动感也没有了?贴一下我的代码
void CGraphicView::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
if(m_bDraw)
{
//CClientDC dc(this);
int nDrawMode = dc.SetROP2(R2_NOTXORPEN);
DrawGraphics(&dc,m_cGph);
dc.SetROP2(nDrawMode);
m_cGph.m_ptEnd=m_ptOrigin;
DrawGraphics(&dc,m_cGph);
} OnPrepareDC(&dc);
OnDraw(&dc);
// Do not call CScrollView::OnPaint() for painting messages
}void CGraphicView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值 //if(m_bDraw)
//{
// CClientDC dc(this);
// int nDrawMode = dc.SetROP2(R2_NOTXORPEN);
// DrawGraphics(&dc,m_cGph);
// SendMessage(WM_PAINT);
// dc.SetROP2(nDrawMode);
// m_cGph.m_ptEnd=point;
// DrawGraphics(&dc,m_cGph);
//}
if(m_bDraw)
{
UpdateWindow();
m_ptOrigin = point;
}
CScrollView::OnMouseMove(nFlags, point);
}