www.mxdraw.com
内容索引主面
前一个向上下一个
MxDraw::DrawEntityToDc 方法

把一个实体绘制到CDC 上

C++
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;
    }
Copyright (c) 2010. All rights reserved.
你认为该帮助怎么样? 发送反馈信息!