把一个实体绘制到CDC 上
static BOOL DrawEntityToDc(IN McDbEntity* pEnt, IN int iDCWidth, IN int iDCHeight, IN OUT CDC* pDC, IN COLORREF* pBkColor = NULL, IN McDbDatabase* pDatabase = NULL, IN double dSpace = -1);
参数 |
说明 |
IN McDbEntity* pEnt |
该实体可以是一个临时的对象,不需要求必须在数据库中 |
IN OUT CDC* pDC |
设备场境对象指针 |
IN COLORREF* pBkColor = NULL |
绘制的背景颜色 |
IN McDbDatabase* pDatabase = NULL |
这个参数暂没有被使用,传为空。 |
IN double dSpace = -1 |
在CDC上显示,四周距边界的距离,文档坐标,如果为-1,就自动计算. |
iDcWidth |
绘到设备场境上的宽度,绘制位置默认到左上角0,0点 |
iDcHeight |
绘到设备场境上的高度,绘制位置默认到左上角0,0点 |
成功返回TRUE
把一个实体绘制到CDC 上 例如:sampleedit.sln中例程代码
void CDrawEntityToDcDialog::OnPaint() { CPaintDC dc(this); // device context for painting AcDbObjectPointer<AcDbEntity> spEnt(m_id,AcDb::kForRead); if(spEnt.openStatus() == Acad::eOk) { COLORREF bkColor = RGB(255,255,255); CRect rc(0,0,200,200); dc.FillSolidRect(rc,bkColor); MxDraw::DrawEntityToDc(spEnt.object(),rc.Width(),rc.Height(),&dc,&bkColor); } } CBitmap* DrawEntityToBitmap(AcDbObjectId id,int iWidth,int iHeight) { AcDbObjectPointer<AcDbEntity> spEnt(id,AcDb::kForRead); if(spEnt.openStatus() == Acad::eOk) { return NULL; } CDC dc; dc.Attach(::GetDC(NULL)); CBitmap* pRet = new CBitmap; pRet->CreateCompatibleBitmap(&dc,iWidth,iHeight); CDC tmpDc; tmpDc.CreateCompatibleDC(&dc); CBitmap* pOld = tmpDc.SelectObject(pRet); COLORREF bkColor = RGB(255,255,255); MxDraw::DrawEntityToDc(spEnt.object(),iWidth,iHeight,&tmpDc,&bkColor); tmpDc.SelectObject(pOld); return pRet; }