如何在VC2010对话框中的Picture Control上画矩形框?

pppooonnnyyy 2012-07-09 09:37:42
编程环境:VC2010
目标:在对话框程序中加入一个Picture Control显示一副Bmp图像,然后想在该图像上利用鼠标画一个矩形框Rect,从而选择图片的一部分进行后续处理
遇到问题:在对话框的OnPaint函数中画的点、线等均不能显示在图片上
当前思路:感觉应该重载Picture Control本身的ondraw函数,但是不知道具体如何做,或者该思路是否正确

请各位指点,谢谢。
...全文
475 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
又是没人回答的帖子。。。百度出来一大堆同样的问题。没有解决方案,有什么用呢。。
向立天 2013-03-09
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
wgc 2012-07-09
  • 打赏
  • 举报
回复


void CPictureCtlDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

// 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
CPaintDC dc(&m_PictureCtl);
dc.Rectangle(10,10,100,100);
}
}
);
dog357 2012-07-09
  • 打赏
  • 举报
回复
设置个变量,在lbuttondown中FALSE,lbuttonup中TRUE,OnPaint中如果为TRUE则自己画个矩形
schlafenhamster 2012-07-09
  • 打赏
  • 举报
回复
重载Picture Control本身的OnPaint
1.产生一个内存DC memDC
调用:
DefWindowProc(WM_PAINT,&memDC);让控件自己把图画上去。
在MemDC上再画矩形。
复制到窗口DC
pppooonnnyyy 2012-07-09
  • 打赏
  • 举报
回复
我试了一下,在对话框中加入一个CRectTracker m_tracker变量,可是画出的矩形框无法持续显示,即当我松开鼠标左键时虚线画出的矩形框就消失了,如何能够让该虚线框持续显示呢?
附:
我是在OnPaint()函数中调用的
m_tracker.Draw(&dc);
可是仍然不能持续显示。
pppooonnnyyy 2012-07-09
  • 打赏
  • 举报
回复
可以说的具体一些或给出实例代码吗?
如何修改OnPaint()函数,如何修改lbuttondown、lbuttonup、mousemove函数等?
dvlinker 2012-07-09
  • 打赏
  • 举报
回复
使用CRectTracker来实现,类似于QQ截图一样!

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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