ArcGISEngine绘制椭圆--转载
转自: https://blog.csdn.net/sydbc/article/details/17161795
对于椭圆、椭圆弧的生成可以通过ArcGISEngine中的IEllipticArc来实现。下面我们来详细介绍IEllipticArc接口生成对象时用到的两个方法PutCoords与PutCoordsByAngle。
这两个方法有些共同的特点,主要如下:
n所有角度参数的单位都是以弧度来计算
n长半轴与短半轴相互垂直平分
n旋转角度对最后椭圆生成的影响取决于参数EllipseStd的设置
uEllipseStd为False,角度是以坐标轴作为基准
uEllipseStd为True,角度是以长半轴作为基准;并且,起点、终点的坐标都是相对于中心的点的相对坐标
IEllipticArc接口生成对象时用到的两个方法PutCoords与PutCoordsByAngle除了上述的共同点外,又有着各自的特点。
PutCoords方法
public void PutCoords (
bool ellipseStd,
IPoint Center,
IPoint from,
IPoint to,
Double rotationAngle,
Double minorMajorRatio,
esriArcOrientation orientation)
PutCoords方法需要知道确切的椭圆弧起点和终点,其参数的含义如下:
ellipseStd:决定了旋转角度对最后椭圆生成的影响
uEllipseStd为False,角度是以坐标轴作为基准
uEllipseStd为True,角度是以长半轴作为基准;并且,起点、终点的坐标都是相对于中心的点的相对坐标
Center:椭圆弧的中心点
From:椭圆弧的起点
To:椭圆弧的终点
rotationAngle:旋转角度
minorMajorRatio:短轴与长轴的比例(<=1,等于1时绘制的是圆弧)
orientation:椭圆弧绘制方向(顺时针、逆时针、……)
下面代码绘制出来的椭圆弧如下图
IEllipticArc pEll = newEllipticArcClass();
pEll.PutCoords(false, pCenterPoint, sPoint, sPoint1, 0, 0.3, esriArcOrientation.esriArcClockwise);
PutCoordsByAngle方法
public void PutCoordsByAngle (
bool ellipseStd,
IPoint Center,
double FromAngle,
double CentralAngle,
double rotationAngle,
double semiMajor,
double minorMajorRatio);
putCoordsByAngle方法除了可以生成椭圆弧外,还可以生成椭圆。具体参数含义如下:
ellipseStd:决定了旋转角度对最后椭圆生成的影响
u EllipseStd为False,角度是以坐标轴作为基准
u EllipseStd为True,角度是以长半轴作为基准;并且,起点、终点的坐标都是相对于中心的点的相对坐标
Center:椭圆弧中心点
FromAngle:起点角度
CentralAngle:椭圆弧圆心角
rotationAngle:旋转角度
semiMajor:长半轴长度
minorMajorRatio:短半轴与长半轴比例(<=1,等于1时绘制的是圆弧)
下面代码能够绘制椭圆
IEllipticArc pEll = newEllipticArcClass();
pEll.PutCoordsByAngle(false, pCenterPoint, 3, 2 * Math.PI, 0, 200, 0.3);