picture属性设置为rectangle,我通过一下两个函数将图像画到picture中(为了说明防方便我用一串文字代替)。在通过另一函数打印picture的内容。希望是美好的,结果是残酷的。打出来的是桌面背景的一部分,还是黑乎乎的一片。请高手帮帮忙,指点指点。谢谢谢了。// 产生文字
void CListeningDetectView::DisplayText(CDC* pDC)
{
// 标题文字//选入设备环境中
CFont* pOldFont = (CFont*)pDC->SelectObject(&m_TitleTextFont);// 文字底色
// COLORREF bkColor = pDC->SetBkColor(RGB(255, 0, 255)); //文字颜色黑色
COLORREF oldRGB=pDC->SetTextColor(m_TextColor); // 输出标题文字
pDC->TextOutW(100, 100,
L"哈尔滨理工大学校医院检验报告"); pDC->TextOutW(150, 150,
L"哈尔滨理工大学校医院检验报告");
pDC->SetTextColor(oldRGB);
//pDC->SetBkColor(bkColor);
pDC->SelectObject(pOldFont);
}// 显示到picture中
CListeningDetectView::DisplayPicture(void)
{
CDC* pDC;
pDC = m_Picture.GetDC();
CDC memDC; //兼容DC,暂时不需显卡操作,存在内存里
CRect rect;
CBitmap bmpFace;m_Picture.GetClientRect(rect);
bmpFace.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height()); //创建兼容图案,两图合成
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(&bmpFace); CBrush brush;
brush.CreateSolidBrush(m_BackColor1);
memDC.FillRect(rect, &brush);
DisplayText(&memDC);//将内存中的图像复制到当前窗口
pDC->BitBlt(rect.left,rect.top,rect.Width(),
rect.Height(),&memDC,0,0,SRCCOPY );
memDC.DeleteDC();
ReleaseDC(pDC);
}// 打印picture的内容CListeningDetectView::OnPrint()
{
// TODO: 在此添加命令处理程序代码CDC* pDC = m_Picture.GetDC(); // 获取图片空间设备上下文CRect rc;m_Picture.GetClientRect(&rc);// 获取屏幕分辨率
int screenx = pDC->GetDeviceCaps(LOGPIXELSX);
int screeny = pDC->GetDeviceCaps(LOGPIXELSY);CPrintDialog dlg(false);if(IDOK == dlg.DoModal())
{
// attach to the DC we were given
CDC dc;
dc.Attach(dlg.m_pd.hDC);// 获取打印机分辨率
int printerx = dc.GetDeviceCaps(LOGPIXELSX);
int printery = dc.GetDeviceCaps(LOGPIXELSY);// 计算屏幕和打印机分辨率比例
double ratex = (double)printerx / screenx;
double ratey = (double)printery / screeny;dc.StartDoc(L"print");// dc.StartDocW(L"print");// Copies a bitmap from a source rectangle
// into a destination rectangle
dc.StretchBlt(0,
0,
(int)(rc.Width()*ratex),
(int)(rc.Height()*ratey),
pDC,
0,
0,
rc.Width(),
rc.Height(),
SRCCOPY
);
dc.EndDoc();
}
}picture的内容没打出来,而把桌面背景的一角打出来了。请帮帮忙,在线等,谢谢。
void CListeningDetectView::DisplayText(CDC* pDC)
{
// 标题文字//选入设备环境中
CFont* pOldFont = (CFont*)pDC->SelectObject(&m_TitleTextFont);// 文字底色
// COLORREF bkColor = pDC->SetBkColor(RGB(255, 0, 255)); //文字颜色黑色
COLORREF oldRGB=pDC->SetTextColor(m_TextColor); // 输出标题文字
pDC->TextOutW(100, 100,
L"哈尔滨理工大学校医院检验报告"); pDC->TextOutW(150, 150,
L"哈尔滨理工大学校医院检验报告");
pDC->SetTextColor(oldRGB);
//pDC->SetBkColor(bkColor);
pDC->SelectObject(pOldFont);
}// 显示到picture中
CListeningDetectView::DisplayPicture(void)
{
CDC* pDC;
pDC = m_Picture.GetDC();
CDC memDC; //兼容DC,暂时不需显卡操作,存在内存里
CRect rect;
CBitmap bmpFace;m_Picture.GetClientRect(rect);
bmpFace.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height()); //创建兼容图案,两图合成
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(&bmpFace); CBrush brush;
brush.CreateSolidBrush(m_BackColor1);
memDC.FillRect(rect, &brush);
DisplayText(&memDC);//将内存中的图像复制到当前窗口
pDC->BitBlt(rect.left,rect.top,rect.Width(),
rect.Height(),&memDC,0,0,SRCCOPY );
memDC.DeleteDC();
ReleaseDC(pDC);
}// 打印picture的内容CListeningDetectView::OnPrint()
{
// TODO: 在此添加命令处理程序代码CDC* pDC = m_Picture.GetDC(); // 获取图片空间设备上下文CRect rc;m_Picture.GetClientRect(&rc);// 获取屏幕分辨率
int screenx = pDC->GetDeviceCaps(LOGPIXELSX);
int screeny = pDC->GetDeviceCaps(LOGPIXELSY);CPrintDialog dlg(false);if(IDOK == dlg.DoModal())
{
// attach to the DC we were given
CDC dc;
dc.Attach(dlg.m_pd.hDC);// 获取打印机分辨率
int printerx = dc.GetDeviceCaps(LOGPIXELSX);
int printery = dc.GetDeviceCaps(LOGPIXELSY);// 计算屏幕和打印机分辨率比例
double ratex = (double)printerx / screenx;
double ratey = (double)printery / screeny;dc.StartDoc(L"print");// dc.StartDocW(L"print");// Copies a bitmap from a source rectangle
// into a destination rectangle
dc.StretchBlt(0,
0,
(int)(rc.Width()*ratex),
(int)(rc.Height()*ratey),
pDC,
0,
0,
rc.Width(),
rc.Height(),
SRCCOPY
);
dc.EndDoc();
}
}picture的内容没打出来,而把桌面背景的一角打出来了。请帮帮忙,在线等,谢谢。
解决方案 »
- 求一个规范全面的 傅里叶快速变换 FFT C++类
- 已获取框架的文档指针,如何获取框架的全部内容
- 请教一个AlphaBlend画透明矩形的问题。如何在OnMouseMove中擦除先前画的透明矩形。
- 用vc调用一个外部库的函数,出现异常
- 谁有VC写的G.711音频压缩解压代码(注:不是C写的,最好含测试代码)
- 如果一台机器上没有ACCESS的数据库驱动程序,那怎样VC在程序中创建该驱动,必须修改注册表吧?
- 大家帮帮忙 ,关于滚动条的问题
- CTreeCtrl 拖放问题请教
- 大家帮帮我!我是一个mfc初学者,从别人那里弄到一个程序,怎么编译执行程序啊?我有急用啊!谢谢了!
- 谁有关于MIDL语言的数据类型定义的中文资料?
- 【求教】自己改的一个VC的天气预报 为何截取的内容全是乱码?
- 如何打印picture控件的内容???在线等。谢谢。
额 还是那张贴里面说的 "画"出来控件里面的东西打印不出来可以自己贴图上去的说~~~