如何用鼠标在图象上取一块?

emilyzdy 2003-04-13 06:10:37
我想用鼠标在图象上取一块出来计算平均值。在
void CxxxView::OnMouseMove(UINT nFlags, CPoint point)
{
if(fDowned)
{
ptUp=point;
DrawRect();
}
CScrollView::OnMouseMove(nFlags, point);
}
现在的问题是1。用鼠标拖动时会有无数个矩形,如何在画矩形前擦除上一个矩形?
2。由于有滚动条,我在OnLButtonUp()中用dc.LPtoDP(&ptUp);试图得到相对于图象左上角的逻辑位置,为何没用?请各位大侠指教!
...全文
22 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dacaifu 2003-04-13
  • 打赏
  • 举报
回复
OnMouseMove()
DrawFocusRect
rect = ...
DrawFocusRect
连续画两次,就可消除原有的矩形。
然后更新矩形,在花一次
emilyzdy 2003-04-13
  • 打赏
  • 举报
回复
不行啊。画出来的是黑底白边的矩形。
In355Hz 2003-04-13
  • 打赏
  • 举报
回复
1.
// add class member
CRect m_rectTrack;

// override OnLButtonDown
m_rectTrack = CRect(0, 0, 0, 0);

void CxxxView::OnMouseMove(UINT nFlags, CPoint point)
{
if(fDowned)
{
CClientDC dc(this);

pDC->SetBkMode(TRANSPARENT);
int nOldROP = pDC->SetROP2(R2_MASKNOTPEN);
if ( !m_rectTrack.IsEmpty() )
pDC->Rectangle(m_rectTrack.left+1, m_rectTrack.top+1, m_rectTrack.right, m_rectTrack.bottom);
pDC->Rectangle(rect.left+1, rect.top+1, rect.right, rect.bottom);
pDC->SetROP2(nOldROP);

m_rectTrack = rect;
}

CScrollView::OnMouseMove(nFlags, point);
}

2.
CClientDC dc(this);
OnPrepareDC(&dc);
dc.LPtoDP(&ptUp);

emilyzdy 2003-04-13
  • 打赏
  • 举报
回复
如何去掉?我在void CxxxxView::DrawRect(int mode)
{
CClientDC dc(this);
CPen pen,oldpen;
pen.CreatePen(PS_DOT,1,RGB(0,0,255));
oldpen.CreatePen(PS_NULL,0,RGB(0,0,0));
CRect rect(ptDown,ptUp);

if(mode==1)
dc.SelectObject(&oldpen);
else
dc.SelectObject(&pen);
dc.SelectStockObject(NULL_BRUSH);//选入空刷子
dc.Rectangle(&rect);
}
想让mode=1时擦,但没有用。(在OnMouseMove()中ptUp=point;之前调用了DrawRect(1);)
IceWall 2003-04-13
  • 打赏
  • 举报
回复
dc.SetROP2 (R2_NOT); //象皮筋
dc.Rectangle(ptStart,m_SelOldPoint);
dc.SetROP2 (R2_NOT); //象皮筋
dc.Rectangle(ptStart, ptEnd);
SelOldPoint=pt;//pt是当前的鼠标点

这样您就可以实现拉皮筋似的功能了!

coyer 2003-04-13
  • 打赏
  • 举报
回复
画之前要先去掉先前画的那个,你没有去掉,所以有无数个了。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧