分享
 
 
 

Mschart控件图象打印处理

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

mschart图象打印的VC程序处理:

在VC中,实现打印比在VB中困难很多,在如题的问题中,VB的解决方案很简单:

VB的解决方案:

原理:mschart.editcopy(拷贝控件显示图象)

printer.print mschart.openclipboard(VB语句解释)(打印剪贴板内容)

但在VC中,打印不是一件容易的事,我把在网友帮助下解决的Mschart控件的打印实现源码给大家贴出来,作为参考

具体实现,

HANDLE hDib;

HPALETTE hPalette;

m_mschart.GetPlot().GetBackdrop()

.GetFill().GetBrush().GetFillColor().Set(255, 255, 255);

m_mschart.GetPlot().GetBackdrop().GetShadow().SetStyle(FALSE);//阴影

m_mschart.EditCopy();

if(OpenClipboard())//m_mschart.

{

hDib = GetClipboardData(CF_DIB);

hPalette = (HPALETTE)GetClipboardData(CF_PALETTE);

CloseClipboard();

}

else

return;

m_mschart.GetPlot().GetBackdrop()

.GetFill().GetBrush().GetFillColor().Set(192, 192, 192);

m_mschart.GetPlot().GetBackdrop().GetShadow().SetStyle(TRUE);//阴影

CPrintDialog mypd(FALSE);// 构造打印设置对话框对象

mypd.GetDefaults(); // 检取缺省打印设备的设备环境

DEVMODE *dm = mypd.GetDevMode();// 提取缺省打印机的DEVMODE数据

dm->dmOrientation = 2;

// dm->dmPrintQuality = 1200;

PRINTDLG pd;

{

pd.lStructSize = sizeof(PRINTDLG);

pd.Flags = PD_RETURNDC;

pd.hDC = NULL;

pd.hwndOwner = NULL;

pd.hInstance = NULL;

pd.nMaxPage = 256;

pd.nMinPage = 1;

pd.nFromPage = 1;

pd.nToPage = 256;

pd.nCopies = 1;

pd.hDevMode = dm;

pd.hDevNames = NULL;

}

if(!PrintDlg(&pd))

{

return;

}

ASSERT(pd.hDC != NULL);

CDC pDC;

pDC.Attach(pd.hDC);

int nHorRes = GetDeviceCaps(pd.hDC, HORZRES);//返回设备的物理显示宽度mm

int nVerRes = GetDeviceCaps(pd.hDC, VERTRES);//返回设备的物理显示高度mm

if(pd.hDC != NULL)

{

DOCINFO di;

di.cbSize = sizeof(DOCINFO);

di.lpszDocName = "图象打印";

di.lpszOutput = (LPTSTR)NULL;

di.lpszDatatype = (LPTSTR)NULL;

di.fwType = 0;

pDC.StartDoc(&di); file://通知打印机驱动程序执行一新的打印任务

pDC.StartPage(); file://通知打印机驱动程序打印新页

SetMapMode(pd.hDC, MM_TEXT);//设置当前影射模式为:单位0.001英寸

CRect rectPrint(0, 0, nHorRes, nVerRes);

file://打印图形

BITMAPINFO* pbi = (BITMAPINFO*)GlobalLock(hDib);

if (pbi != NULL)

{

BYTE* Data = (BYTE*)(pbi->bmiColors);

if (pbi->bmiHeader.biBitCount <= 8)

{

int nColor = pbi->bmiHeader.biClrUsed

? pbi->bmiHeader.biClrUsed : (1<<pbi->bmiHeader.biBitCount);

Data += sizeof(RGBQUAD) *nColor;

}

if (hPalette != NULL)

SelectPalette(pd.hDC, hPalette, TRUE);

StretchDIBits(pd.hDC, rectPrint.left, rectPrint.top, rectPrint.Width(),

rectPrint.Height(), 0, 0, pbi->bmiHeader.biWidth,

pbi->bmiHeader.biHeight, Data, pbi, DIB_RGB_COLORS, SRCCOPY);

GlobalUnlock(hDib);

}

EndPage(pd.hDC); file://通知打印机驱动程序页结束

EndDoc(pd.hDC);

pDC.DeleteDC();

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有