rocket_liushaodong 2016-05-27 02:06 采纳率: 0%
浏览 953

OpenGL在64位计算机上无法以bmp方式拷贝绘制的图形?

大家好,
本人项目中采用VS2013+OpenGL绘图并对图形进行拷贝,测试程序为一个基于对话框的工程,在主对话框中有一个自定义控件用于绘图,该控件旁边有一个按钮控件Copy,其响应函数OnBnClickedButtonCopy()中对自定义控件中的图形做拷贝。
自定义控件CGraphCtrl中的OnPaint函数如下:
void CGraphCtrl::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
//MFC绘图
CRect rc;
GetClientRect(&rc);
dc.MoveTo(0, 0);
dc.LineTo(rc.right, rc.bottom);
dc.MoveTo(rc.right, 0);
dc.LineTo(0, rc.bottom);

//OpenGL绘图
wglMakeCurrent(m_hDC, m_hRC);
DrawGraph();
SwapBuffers(m_hDC);
wglMakeCurrent(m_hDC, NULL);
}

主对话框按钮控件Copy的响应函数如下:
void CUsingGlut32Dlg::OnBnClickedButtonCopy()
{
//m_GraphCtrl.WriteBmpToFile(hBitmap, _T("WriteBmpToFile.bmp"));
HBITMAP hBitmap = m_GraphCtrl.GetBmpHandle();
m_GraphCtrl.CopyBmpToClipBoard(hBitmap);
}
下面为该程序在win10 64位机器上的运行效果和点击按钮Copy后剪贴板中的内容:
图片说明
图片说明
该程序在win7 32位机器上运行正常,即点击Copy后剪贴板中的内容与界面显示的相同。
上述问题很让人难以理解,程序在64位计算机上运行时,DC所绘内容在哪儿?RC所绘内容与DC不在同一个缓存里?希望那位老师或大侠能给出解释和解决方案。非常感谢!

  • 写回答

1条回答

  • 普通网友 2016-10-04 18:34
    关注

    本人项目中采用VS2013+OpenGL绘图并对图形进行拷贝,测试程序为一个基于对话框的工程,在主对话框中有一个自定义控件用于绘图,该控件旁边有一个按钮控件Copy,其响应函数OnBnClickedButtonCopy()中对自定义控件中的图形做拷贝。
    自定义控件CGraphCtrl中的OnPaint函数如下:
    void CGraphCtrl::OnPaint()
    {
    CPaintDC dc(this); // device context for painting
    // TODO: 在此处添加消息处理程序代码
    //MFC绘图
    CRect rc;
    GetClientRect(&rc);
    dc.MoveTo(0, 0);
    dc.LineTo(rc.right, rc.bottom);
    dc.MoveTo(rc.right, 0);
    dc.LineTo(0, rc.bottom);

    评论

报告相同问题?

悬赏问题

  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)