VC6.0 MFC 窗体中picturebox画线问题

northwolves 2019-04-26 07:45:15
好多年不用VC了。请教大家一个问题,VC6.0 MFC 窗体正中间有一个picturebox.在其内画一个坐标系,设置横坐标100-200,纵坐标200-300.如何在picturebox内部画一条直线(50,50)-(150,250)?坐标范围外的线段部分不用显示


...全文
229 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
先画到一个CImage类里,而后再BitBlt上去。太久不干MFC,代码都没了。这样还避免闪烁
zgl7903 2019-04-27
  • 打赏
  • 举报
回复
Windows DC 默认的映射模式是MM_TEXT, 坐标 窗口左上角为(0,0), X轴方向向右,Y轴方向向下 如果不想修改映射模式, 可以对移动和画线的坐标进行一个换算 或者修改映射模式为 MM_ISOTROPIC, SetWindowExt , SetViewportExt 修改 坐标大小和方向, SetViewportOrg 修改坐标原点

 int cxPage = pDC->GetDeviceCaps (HORZRES);
 int cyPage = pDC->GetDeviceCaps (VERTRES);
 pDC->SetMapMode (MM_ISOTROPIC) ;
 pDC->SetWindowExt ( 1000, 1000) ;
 pDC->SetViewportExt (cxPage / 2, -cyPage / 2) ;
 pDC->SetViewportOrg (cxPage / 2,  cyPage / 2) ;
 ……
northwolves 2019-04-26
  • 打赏
  • 举报
回复
CWnd	*qWnd = GetDlgItem(Pic2);
qWnd->Invalidate();
qWnd->UpdateWindow();
CDC* pDC2 = qWnd->GetDC();

//pDC2->SetBkMode(TRANSPARENT);
//pDC2->SelectObject(&font);



CPen *pPenBlue = new CPen(); //创建画笔对象

pPenBlue ->CreatePen(PS_SOLID, 1, RGB(0, 0, 255)); //red


CGdiObject *pOldPen = pDC2 ->SelectObject(pPenBlue);
pDC2->SelectObject(pPenBlue);
pDC2->MoveTo(-700,-500);
pDC2->LineTo(400,400);
pDC2 ->SelectObject(pOldPen);
delete pPenBlue;
ReleaseDC(pDC2);


窗体上Picturebox ID为Pic2,这个代码会从PICTUREBOX之外画一条线进去
greex 2019-04-26
  • 打赏
  • 举报
回复
c++ mfc太多年不用了,如果是java还能有想法,这个你可以看看msdn中样例中是否有?
northwolves 2019-04-26
  • 打赏
  • 举报
回复
就是想只在PICTUREBOX内画线

65,189

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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