关于PictureControl上面用GDI画图的问题【新号,望大家见谅】

ctolee 2009-10-30 10:34:25
今天做界面时,遇一问题。相当郁闷,BAIDU GOOGLE很久无果,求助。
问题如下:
Dialog对话框程序,上面只有一个PictureControl控件里面放个图。


我想要的效果就是在原有PictureControl图片的上面显示一个GDI小图
然后我在OnPaint里面写下:

void CGDITestDlg::OnPaint()
{
srand((unsigned)time(NULL));
int n = rand()%20;

CWnd *pwnd = GetDlgItem(ID_PIC_LEFT); //ID_PIC_LEFT为控件ID
CPaintDC pDc(pwnd);
// CDC* pDc = pwnd->GetDC(); // 试了这种方法也不行

m_dcMemo.CreateCompatibleDC(&pDc);
m_dcMemo.SelectObject(m_cbmp);//m_cbmp为CBitmap变量,在初始化时已经LoadBitmap了
pDc.BitBlt(10*n, 10*n, 31, 60, &m_dcMemo, 0, 0, SRCAND);
m_dcMemo.DeleteDC();
}


对话框设置Clip children属性也不行。

新号只能发0分帖,能加分时,加满。谢谢大家
...全文
269 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
// TODO: Add your control notification handler code here

CWnd *pwnd = GetDlgItem(IDC_Picture);
CDC *pdc = pwnd->GetDC();

//逻辑坐标与设备坐标变换
CRect rect;
pwnd->GetWindowRect(rect);
pdc->SetMapMode(MM_ANISOTROPIC);
dc.SetWindowOrg(0, 0);
dc.SetWindowExt(rect.right, rect.bottom);
dc.SetViewportOrg(0, rect.bottom / 2);
dc.SetViewportExt(rect.right, - rect.bottom);


//创建Graphics对象
Graphics graphics(*pdc);

//创建pen
Pen myPen(Color::Blue);
myPen.SetWidth(1);
//取MFC Color Button颜色并赋值给myPen
Color pColor;
pColor.SetFromCOLORREF(m_PColor);//CMFCColorButton m_btPColor, m_btFColor;
myPen.SetColor(pColor);

//画正旋曲线
for (int i = 0; i < rect.right; i++)
{
graphics.DrawLine(&myPen, i, 100 *sin(2 *(i / (rect.right / 5.0)) * 3.1415926), i + 1, 100 *sin(2 *((i + 1) / (rect.right / 5.0)) *3.1415926));
}
//画X轴
pColor.SetFromCOLORREF(m_FColor);
myPen.SetColor(pColor);
graphics.DrawLine(&myPen, 0, 0, rect.right, 0);

15,980

社区成员

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

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