把图形中某个区域绘制到CDC对象中
static BOOL DrawToDc(MXDRAWOCXHANDLE hOcx, CDC* pDC, int iDCx, int iDCy, int iDCWidth, int iDCHeight, double dLbx, double dLby, double dRtx, double dRty, COLORREF* pBkColor = NULL, BOOL isDrawTempObject = TRUE, BOOL isDrawNoBufferTempObject = TRUE);
参数 |
说明 |
MXDRAWOCXHANDLE hOcx |
控件窗口句柄 |
CDC* pDC |
输出的CDC设备场景对象 |
int iDCx |
在CDC上的输出的左上角X值 |
int iDCy |
在CDC上的输出的左上角Y值 |
int iDCWidth |
在CDC上的输出的宽度 |
int iDCHeight |
在CDC上的输出的高度 |
double dLbx |
输出范围的左下角坐标X,文档坐标系统 |
double dLby |
输出范围的左下角坐标Y,文档坐标系统 |
double dRtx |
输出范围的右上角坐标X,文档坐标系统 |
double dRty |
输出范围的右上角坐标Y,文档坐标系统 |
COLORREF* pBkColor = NULL |
背景颜色,为NULl取控件的视区背景色 |
BOOL isDrawTempObject = TRUE |
是否绘制临时对象 isDrawNoBufferTempObject-是否绘制不带缓存的临时对象 |
成功返回TRUE
例程参考sampleEdit.sln中的void CTestCommands::DrawToBmp() 例如:把控件中指定区域中的内容保存到bmp中
CBitmap bm; bm.CreateCompatibleBitmap(&dc,iBmpWidth,iBmpHeight); CDC tmpDc; tmpDc.CreateCompatibleDC(&dc); CBitmap*pOld = tmpDc.SelectObject(&bm); if(MxDraw::DrawToDc(MxDraw::GetCurOcxHandle(), &tmpDc,0,0,iBmpWidth,iBmpHeight, pt1.x,pt1.y,pt2.x,pt2.y ) ) { tmpDc.SelectObject(pOld); if(SaveBmp(&bm,&dc,sFileName) ) { AfxMessageBox(_T("保存成功")); } else { AfxMessageBox(_T("保存失败")); } } else { AfxMessageBox(_T("未知原因,保存失败")); tmpDc.SelectObject(pOld); }