急!!打印不出图形

OPT_lezhehao 2014-11-17 11:24:33
我用opengl画图,然后用虚拟打印机打印成pdf显示,但是pdf出来了,却没有图形,让人很困惑。


CString strDefualtDev = TEXT("");
PRINTDLG pd;
LPDEVMODE lpDevMode;
if(AfxGetApp()->GetPrinterDeviceDefaults(&pd))
{
lpDevMode=(LPDEVMODE)GlobalLock(pd.hDevMode);
if(lpDevMode)
{
strDefualtDev = lpDevMode->dmDeviceName;
}
GlobalUnlock(pd.hDevMode);
}
if(AfxGetApp()->GetPrinterDeviceDefaults(&pd))
{
lpDevMode=(LPDEVMODE)GlobalLock(pd.hDevMode);
if(lpDevMode)
{
lpDevMode->dmPaperSize=DMPAPER_A4; // 设定打印纸张幅面
lpDevMode->dmOrientation=DMORIENT_LANDSCAPE; // 设定横向打印
lpDevMode->dmPrintQuality=600; // 设定打印机分辨率
}
GlobalUnlock(pd.hDevMode);
ResetDC(pd.hDC, lpDevMode);
}
DOCINFO info;
memset( &info, 0, sizeof(DOCINFO) );
info.cbSize = sizeof(DOCINFO);
info.lpszDocName = _T("打印图形"); // 设定打印文档名称
info.lpszOutput = (LPTSTR) NULL;
info.fwType = 0;
HDC hdc = ::CreateDC(NULL, _T("pdfFactory Pro"), NULL, lpDevMode); // 得到打印机设备句柄
int a = StartDoc(hdc,&info);
StartPage(hdc);

HDC hdc2 = GetDC(hWnd);
PIXELFORMATDESCRIPTOR *pfd=new PIXELFORMATDESCRIPTOR;
pfd->nSize=sizeof(PIXELFORMATDESCRIPTOR);
pfd->nVersion=1;
pfd->dwFlags=PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER|PFD_STEREO_DONTCARE;
pfd->iPixelType=PFD_TYPE_RGBA;
pfd->cColorBits=32;
pfd->cRedBits=8;
pfd->cRedShift=16;
pfd->cGreenBits=8;
pfd->cGreenShift=8;
pfd->cBlueBits=8;
pfd->cBlueShift=0;
pfd->cAlphaBits=0;
pfd->cAlphaShift=0;
pfd->cAccumBits=64;
pfd->cAccumRedBits=16;
pfd->cAccumGreenBits=16;
pfd->cAccumBlueBits=16;
pfd->cAccumAlphaBits=0;
pfd->cDepthBits=32;
pfd->cStencilBits=8;
pfd->cAuxBuffers=0;
pfd->iLayerType=PFD_MAIN_PLANE;
pfd->bReserved=0;
pfd->dwLayerMask=0;
pfd->dwVisibleMask=0;
pfd->dwDamageMask=0;

int informat = ChoosePixelFormat(hdc2,pfd);
if (informat == 0)
{
if (DescribePixelFormat(hdc2,informat,sizeof(PIXELFORMATDESCRIPTOR), pfd)==0)
{
return;
}
informat = 1;
}
if (::SetPixelFormat(hdc2, informat, pfd) == FALSE)
{
return;
}

HGLRC hrc = wglCreateContext(hdc2);
if(hrc!=NULL)
{
BOOL flag = wglMakeCurrent(hdc2,hrc);
int a= 0;
}

glMatrixMode(GL_MODELVIEW); // To operate on Model-View matrix
glLoadIdentity();

glPushMatrix();
glColor3f(1.0,0.0,1.0);
glBegin(GL_POLYGON);
glVertex2f(100,2);
glVertex2f(4,130);
glVertex2f(4,170);
glEnd();
glPopMatrix();

wglMakeCurrent(NULL,NULL);//断开与着色环境的联系

EndPage(hdc);
EndDoc(hdc);
...全文
107 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ryfdizuo 2014-11-17
  • 打赏
  • 举报
回复
单独看gl渲染代码,全部采用默认设置的话,看着没啥问题。
图灵狗 2014-11-17
  • 打赏
  • 举报
回复
可以把单独的OpenGL代码拿出来,看看是否本身渲染就有问题。
OPT_lezhehao 2014-11-17
  • 打赏
  • 举报
回复
先结贴,以后看看有没有答案。
OPT_lezhehao 2014-11-17
  • 打赏
  • 举报
回复
难道CSDN高手都离开了?
OPT_lezhehao 2014-11-17
  • 打赏
  • 举报
回复
hdc是打印机的句柄,hdc2是对话框的m_hwnd->GetSafeHdc(); 我把hdc2改成了hdc还是一样的。。。,不知道我是不是哪里搞错了。。。
图灵狗 2014-11-17
  • 打赏
  • 举报
回复
你PDF用的是hdc,而OpenGL却在hdc2上渲染。
引用 3 楼 OPT_lezhehao 的回复:

glMatrixMode(GL_MODELVIEW);      // To operate on Model-View matrix
    glLoadIdentity();
 
    glPushMatrix();
    glColor3f(1.0,0.0,1.0);  
    glBegin(GL_POLYGON);
    glVertex2f(100,2);
    glVertex2f(4,130);
    glVertex2f(4,170);
    glEnd();
    glPopMatrix();
我试了下没问题啊
OPT_lezhehao 2014-11-17
  • 打赏
  • 举报
回复

glMatrixMode(GL_MODELVIEW);      // To operate on Model-View matrix
    glLoadIdentity();
 
    glPushMatrix();
    glColor3f(1.0,0.0,1.0);  
    glBegin(GL_POLYGON);
    glVertex2f(100,2);
    glVertex2f(4,130);
    glVertex2f(4,170);
    glEnd();
    glPopMatrix();
我试了下没问题啊

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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