C++数字图像处理
文件大小: 1101k
源码售价: 10 个金币 积分规则     积分充值
资源说明:// 显示等待光标 BeginWaitCursor(); // 获取文档 CCh1_1Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // 获取DIB HDIB hDIB = pDoc->GetHDIB(); // 判断DIB是否为空 if (hDIB != NULL) { LPSTR lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) hDIB); // 获取DIB宽度 int cxDIB = (int) ::DIBWidth(lpDIB); // 获取DIB高度 int cyDIB = (int) ::DIBHeight(lpDIB); ::GlobalUnlock((HGLOBAL) hDIB); CRect rcDIB; rcDIB.top = rcDIB.left = 0; rcDIB.right = cxDIB; rcDIB.bottom = cyDIB; CRect rcDest; // 判断是否是打印 if (pDC->IsPrinting()) { // 是打印,计算输出图像的位置和大小,以便符合页面 // 获取打印页面的水平宽度(象素) int cxPage = pDC->GetDeviceCaps(HORZRES); // 获取打印页面的垂直高度(象素) int cyPage = pDC->GetDeviceCaps(VERTRES); // 获取打印机每英寸象素数 int cxInch = pDC->GetDeviceCaps(LOGPIXELSX); int cyInch = pDC->GetDeviceCaps(LOGPIXELSY); // 计算打印图像大小(缩放,根据页面宽度调整图像大小) rcDest.top = rcDest.left = 0; rcDest.bottom = (int)(((double)cyDIB * cxPage * cyInch) / ((double)cxDIB * cxInch)); rcDest.right = cxPage; // 计算打印图像位置(垂直居中) int temp = cyPage - (rcDest.bottom - rcDest.top); rcDest.bottom += temp/2; rcDest.top += temp/2; } else // 非打印 { // 不必缩放图像 rcDest = rcDIB; } // 输出DIB ::PaintDIB(pDC->m_hDC, &rcDest;, pDoc->GetHDIB(), &rcDIB;, pDoc->GetDocPalette()); } // 恢复正常光标 EndWaitCursor();
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。