QQ登录

只需一步,快速开始

312上位机VC MFC实现指定控件的打印功能

[ 复制链接 ]

312上位机VC MFC实现指定控件的打印功能

312上位机VC MFC实现指定控件的打印功能

指定控件的打印功能
功能展示
程序界面会有很多控件,如图片控件,按钮控件等,有时我们想打印指定控件的界面,我们当前例程实现指定图片控件的打印功能,效果如图,点击<打印右侧图片控件>可以将图片打印出来;

要点提示
在微软的WINDOWS系统中,打印机的的输出与程序 的显示都是通过 设备上下文CDC实现 的,CDC类提供了StretchBlt,Bitblt两个函数用于图片的绘制,控件界面的打印是以图片的形式进行,在涉及图片打印时,一定要使用函数StretchBlt,因为此函数会根据源设置区域与目标设备区域大小的不同,自动调整绘图的比率。我们知道打印机的分辨率与屏幕的通常是不同,所以得用StretchBlt()函数来调整打印比率;

实现功能
1.新建基于对话框的应用程序
2.在对话框界面添加一控件用于打印, 我们当前例程添加一图片控件,ID改为IDC_IMAGECTRL,插入一图片IDB_BITMAP1,设置图片控件的属性;
3.添加一按钮<打印 左侧 图片控件>关联按钮的点击 函数
void CGkbc8Dlg::OnButton1()
{
CStatic *pImageCtrl = (CStatic *)GetDlgItem(IDC_IMAGECTRL);
CDC* imagedc = pImageCtrl->GetDC();//获取图像控件的DC
CRect rect;
pImageCtrl->GetClientRect(rect);//获取图像控件的大小

int formx,formy;
formx = imagedc->GetDeviceCaps(LOGPIXELSX);
formy = imagedc->GetDeviceCaps(LOGPIXELSY);
CPrintDialog printdlg (FALSE);
if (printdlg.DoModal()==IDOK)
{
CDC dc;
dc.Attach(printdlg.GetPrinterDC());
//获取打印机与屏幕的分辨率比率
int printerx,printery;
printerx = dc.GetDeviceCaps(LOGPIXELSX);
printery = dc.GetDeviceCaps(LOGPIXELSY);
double ratex,ratey;
ratex = (double)printerx/formx;
ratey = (double)printery/formy;
//打印图像
dc.StartDoc("print");
dc.StretchBlt(30,40,(int)(rect.Width()*ratex),(int)(rect.Height()*ratey),imagedc,0,0,rect.Width(),rect.Height(),SRCCOPY);
dc.EndDoc();
}
}
我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:312上位机VC MFC实现指定控件的打印功能.rar 
文件大小:568.67 KB  售价:11金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!




回复

使用道具 举报

快速回复 返回列表 客服中心 搜索