描述:
我在CAd上插入光栅图像,默认加载在0图层上,我想用程序控制他的透明度,但是这样写的程序运行没有结果,还请大家帮忙?多谢!
bool CGisMapUrlDlg::SetImageTransparency( bool bFlags )
{
// 从0图层上获取实体Id
CQKQueryLayer mQkq(NULL);
mQkq.AddQuery(_T("0"));
AcDbObjectIdArray arrIds = mQkq.GetAllIds();
int iCount = arrIds.length();
for (int i=0;i<iCount;++i)
{
AcDbObjectId id= arrIds.at(i);
// 打开实体
AcDbRasterImage *pEnt = NULL;
if(Acad::eOk !=acdbOpenObject(pEnt, id,AcDb::kForWrite))
{
continue;
}
AcCmTransparency transparency = pEnt->Transparency();
transparency.setAlpha(255);
if(bFlags)
{
transparency.setAlpha(0);
}
Acad::ErrorStatus es = pEnt->setTransparency(transparency);
pEnt->close();
}
// 刷新
acDocManager->lockDocument(acDocManager->mdiActiveDocument(),AcAp::kWrite,NULL,NULL,true);
Acad::ErrorStatus es = actrTransactionManager->queueForGraphicsFlush();
actrTransactionManager->flushGraphics();
acedUpdateDisplay();
acDocManager->unlockDocument(acDocManager->mdiActiveDocument());
return true;
}