1、实现思路:首先我们需要根据我们的需求利用AddPatternDefinition方法增加一个图案定义,第一个参数是图案名称,由我们自行设置,第二个参数是图案定义字符串,也是由我们自己定义的,然后将之前增加好的图案设置为当前绘制填充对象时使用的图案名,最后我们就可以使用啦。
2、主要用到函数说明:
(1)_DMxDrawX::PathMoveToEx
把路径的开始位置移动指定的点。详细说明如下:
参数 | 说明 |
---|---|
DOUBLE dX | 点的X坐标 |
DOUBLE dY | 点的Y坐标 |
DOUBLE dStartWidth | 该点处开始宽度,对Polyline线的绘制有效 |
DOUBLE dEndWidth | 该点处结束宽度,对Polyline线的绘制有效 |
DOUBLE dBulge | 该点处的凸度,对Polyline线的绘制有效 |
(2)_DMxDrawX::PathLineTo
把路径下一个点移到指定位置。详细说明如下:
参数 | 说明 |
---|---|
DOUBLE dX | 点的X坐标 |
DOUBLE dY | 点的Y坐标 |
(3)_DMxDrawX::PatternDefinition
当前绘制填充对象时使用的图案名。
(4)_DMxDrawX::AddPatternDefinition
增加一个图案定义。
参数 | 说明 |
---|---|
BSTR pszName | 图案名称 |
BSTR pszPatternDefinition | 图案定义字符串 |
js代码实现如下:
//绘制一个有图案的填充
//angle, x-origin,y-origin, delta-x,delta-y,dash-1,dash-2, …
//45 = angle 是图案线角度.
//0 = x-origin 是第一个填充线经过的点位置X坐标
//0 = y-origin 是第一个填充线经过的点位置Y坐标
//0 = delta-x 是下一个填充线相对前一个线的X方向偏移
//0.125 = delta-y 是下一个填充线相对前一个线的Y方向偏移
mxOcx.AddPatternDefinition("MyHatchPattern1", "((45, 0,0, 0,0.125))");
//把路径变成一个填充对象
mxOcx.PatternDefinition = "MyHatchPattern1";
//把路径的开始位置移动指定的点
//参数一为点的X坐标 ,参数二为点的Y坐标,参数三为该点处开始宽度,对Polyline线的绘制有效
//参数四为该点处结束宽度,对Polyline线的绘制有效
//参数五为该点处的凸度,对Polyline线的绘制有效
mxOcx.PathMoveToEx(0, 30, 0.3, 0.3, 0.3) ;
//路径的一下个点
mxOcx.PathLineTo( 100, 30);
//路径的一下个点
mxOcx.PathLineTo(100, 60);
//路径的一下个点
mxOcx.PathLineTo(0, 30);
//把路径变成一个填充,80,是填充图案的缩放比例.
mxOcx.DrawPathToHatch(100);
mxOcx.UpdateDisplay();
//绘制图案填充2
mxOcx.AddPatternDefinition("MyHatchPattern2", "((0,0,0,0,8)(90,0,0,8,8,8,-8))");
//把路径变成一个填充对象
mxOcx.PatternDefinition = "MyHatchPattern2";
//把路径的开始位置移动指定的点
//参数一为点的X坐标 ,参数二为点的Y坐标,参数三为该点处开始宽度,对Polyline线的绘制有效
//参数四为该点处结束宽度,对Polyline线的绘制有效
//参数五为该点处的凸度,对Polyline线的绘制有效
mxOcx.PathMoveToEx(100, 30, 0, 0, 0.3) ;
//路径的一下个点
mxOcx.PathLineTo( 200, 30);
//路径的一下个点
mxOcx.PathLineTo(200, 60);
//路径的一下个点
mxOcx.PathLineTo(100, 30);
//把路径变成一个填充,80,是填充图案的缩放比例.
mxOcx.DrawPathToHatch(1);
mxOcx.UpdateDisplay();