weixin_44747156 2019-09-19 11:12 采纳率: 100%
浏览 514
已采纳

请问怎么在动态创建的CStatic类控件里,用CDC画图?(请问我的代码怎么不能显示)

void CMFCApplication2Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码

CStatic* pstaDis = new CStatic;
pstaDis->Create(_T(""), WS_CHILD | WS_VISIBLE | SS_BITMAP | SS_CENTERIMAGE, CRect(50, 50, 300, 300),this, IDC_MYPICTURE); //这里要将GetParent改成this
//HBITMAP hRedBmp1 = (HBITMAP)::LoadImage(NULL, L"C:\\Windows\\picture\\140581199804281918.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
//pstaDis->SetBitmap(hRedBmp1);

CPen pen(PS_SOLID, 4, RGB(255, 0, 0));
HWND hWnd = pstaDis->GetSafeHwnd();
CWnd *pWn  = (CFrameWndEx*)CWnd::FromHandle(hWnd);
CClientDC pDc1(pWn);
CDC MemDC1;
MemDC1.CreateCompatibleDC(&pDc1);
pDc1.SelectStockObject(NULL_BRUSH);

pDc1.SetBkMode(TRANSPARENT);
pDc1.SetTextColor(RGB(255, 255, 0));
/*CBitmap* bmp1;
CBitmap* bmp = MemDC1.SelectObject(bmp1);*/
MemDC1.SetTextColor(RGB(255, 0, 50));//设置字体颜色
MemDC1.SetBkMode(TRANSPARENT);
MemDC1.TextOutW(140, 25, L"请将人脸对准识别框");
pDc1.StretchBlt(50, 50, 200, 200, &MemDC1, 50, 50, 200, 200, SRCCOPY);

}

  • 写回答

1条回答 默认 最新

  • 白色一大坨 2019-09-19 14:47
    关注

    绘图部分需要在OnPaint里面做才行,不是你这样写在按钮里,因为界面会不断刷新。
    你把创建创建的指针做成类成员,在初始化界面时候创建,然后在OnPaint函数里面,用这个指针,在上面画图,就可以达到目的了。
    绘图部分我之前是这样做的,你的函数的确画不出东西,请参考一下:

        CRect ViewRect;
        CWnd *pWin = GetDlgItem(IDC_MYPICTURE);//获取该控件的指针,就可以对该控件直接操作了
        pWin->GetClientRect(ViewRect);//把控件的长宽、坐标等信息保存在rect里
        CDC *pDC = pWin->GetDC();//获取该控件的画布
        //有了画布,下面可以自由的画图了,想怎么画就怎么话
        pDC->SelectStockObject(NULL_BRUSH);
        pDC->SetTextColor(RGB(255, 0, 50));
        pDC->SetBkMode(TRANSPARENT);
        pDC->TextOut(140, 25, "请将人脸对准识别框");
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能