1、在CAD制图是,用户往往需要设置填充的透明度,下面介绍如何绘制填充并设置其透明度。

2、实现思路:首先我们先在控件视区的闭合区域点取一点,然后利用DrawHatchFromPoint方法在当前控件显示范围内搜缩闭合区域,然后用该闭合区域创建填充对象。定义填充图案的文件名,再通过ObjectIdToObject方法由实体id返回实体对象,最后通过创建链表,把需要设置的参数添加到链表中去,通过transparency设置透明度就行啦。

3、主要用到函数说明:

(1)_DMxDrawX::DrawHatchFromPoint

根据一个点,在当前控件显示范围内搜缩闭合区域,然后用该闭合区域创建填充对象,详细说明如下:

参数

说明

DOUBLE dX 

开始搜索点X值

DOUBLE dY 

开始搜索点y值

DOUBLE dPatternScale 

图案缩放比例

(2)IMxDrawDatabase::ObjectIdToObject

实体id返回实体对象,具体详细如下:

参数

说明

[in] LONGLONG lId

实体id

c#代码实现如下:


MxDrawResbuf tran = new MxDrawResbuf();
tran.AddLong(150);
hatch.SetProp("transparency", tran);

js代码实现如下:

    var getPoint = mxOcx.NewComObject("IMxDrawUiPrPoint");
getPoint.message = "点取一点";
if (getPoint.go() != 1) {
return;
}
var frstPt = getPoint.value();
if (frstPt == null)
return;

mxOcx.PatternDefinition = "SOLID";
var id = mxOcx.DrawHatchFromPoint(frstPt.x, frstPt.y, 1.0);
if (id == 0)
return;

var hatch = mxOcx.ObjectIdToObject(id);

var tran = mxOcx.NewResbuf();
tran.AddLong(50);
hatch.SetProp("transparency", tran);