nkmjg 发表于 2024-2-23 16:11:50

ObjectArx 设置填充透明度问题

初始化透明度参数AcCmTransparency对象时,需要调用setAlpha设置透明度值,这里传入的值是0~255,但cad特性面板上显示的是0~90,且经过测试发现,传入值与特性面板显示的值也是不同的,比如传入90,显示64,百度搜索了个寂寞,最后还是在谷歌找到了答案,原来设置的值和特性面板显示的值有个转换关系:int alpha = (int)(((255 - value) * 100) / 255);

所以要在设置透明度之前把值做下转换,像这样

// 设置填充透明度

AcCmTransparency tran;

tran.setMethod(AcCmTransparency::kByAlpha);

int alpha = (int)(255 - ((255 * opacity) / 100));

tran.setAlpha(alpha);

Acad::ErrorStatus es = pHatch->setTransparency(tran);

这样就能和特性面板上的值对应上了。(不过整数除法可能会丢失精度,肯能会有1误差)
页: [1]
查看完整版本: ObjectArx 设置填充透明度问题