|
@@ -39,21 +39,29 @@ import { Point } from "./type/Point";
|
|
*/
|
|
*/
|
|
export class SPolygonItem extends SGraphyItem {
|
|
export class SPolygonItem extends SGraphyItem {
|
|
/** X坐标最小值 */
|
|
/** X坐标最小值 */
|
|
- minX = Number.MAX_SAFE_INTEGER;
|
|
|
|
|
|
+ private minX = Number.MAX_SAFE_INTEGER;
|
|
/** X坐标最大值 */
|
|
/** X坐标最大值 */
|
|
- maxX = Number.MIN_SAFE_INTEGER;
|
|
|
|
|
|
+ private maxX = Number.MIN_SAFE_INTEGER;
|
|
/** Y坐标最小值 */
|
|
/** Y坐标最小值 */
|
|
- minY = Number.MAX_SAFE_INTEGER;
|
|
|
|
|
|
+ private minY = Number.MAX_SAFE_INTEGER;
|
|
/** Y坐标最大值 */
|
|
/** Y坐标最大值 */
|
|
- maxY = Number.MIN_SAFE_INTEGER;
|
|
|
|
|
|
+ private maxY = Number.MIN_SAFE_INTEGER;
|
|
/** 轮廓线坐标 */
|
|
/** 轮廓线坐标 */
|
|
pointList: SPoint[] = [];
|
|
pointList: SPoint[] = [];
|
|
/** 是否闭合 */
|
|
/** 是否闭合 */
|
|
closeFlag: boolean = false;
|
|
closeFlag: boolean = false;
|
|
// 当前状态 1:show 2 创建中,3 编辑中
|
|
// 当前状态 1:show 2 创建中,3 编辑中
|
|
_status: number = 2;
|
|
_status: number = 2;
|
|
- /** 显示高度 */
|
|
|
|
- zOrder: number = 100;
|
|
|
|
|
|
+ // 获取当前状态
|
|
|
|
+ get getStatus(): number {
|
|
|
|
+ return this._status;
|
|
|
|
+ }
|
|
|
|
+ // 编辑当前状态
|
|
|
|
+ set setStatus(value: number) {
|
|
|
|
+ this._status = value;
|
|
|
|
+ this.update();
|
|
|
|
+ };
|
|
|
|
+ data: PolygonData | null = null;
|
|
/** 边框颜色 */
|
|
/** 边框颜色 */
|
|
borderColor: SColor = new SColor("#0091FF");
|
|
borderColor: SColor = new SColor("#0091FF");
|
|
/** 填充颜色 */
|
|
/** 填充颜色 */
|
|
@@ -62,34 +70,33 @@ export class SPolygonItem extends SGraphyItem {
|
|
borderLine: number = 4;
|
|
borderLine: number = 4;
|
|
/** 鼠标移动点 */
|
|
/** 鼠标移动点 */
|
|
private lastPoint = new SPoint();
|
|
private lastPoint = new SPoint();
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 构造函数
|
|
|
|
+ *
|
|
|
|
+ * @param parent 指向父对象
|
|
|
|
+ * @param data PolygonData数据
|
|
|
|
+ */
|
|
|
|
+
|
|
constructor(parent: SGraphyItem | null, data: PolygonData | null) {
|
|
constructor(parent: SGraphyItem | null, data: PolygonData | null) {
|
|
super(parent);
|
|
super(parent);
|
|
- if (data) {
|
|
|
|
- if (data.PointList) {
|
|
|
|
- this._xyzListToSPointList(data.PointList);
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- // 如果
|
|
|
|
- this.pointList = [];
|
|
|
|
- this.update();
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- get getStatus(): number {
|
|
|
|
- return this._status;
|
|
|
|
- }
|
|
|
|
- set setStatus(value: number) {
|
|
|
|
- this._status = value;
|
|
|
|
- this.update();
|
|
|
|
|
|
+ this.data = data
|
|
|
|
+ if (data && data.PointList) {
|
|
|
|
+ this._xyzListToSPointList(data.PointList);
|
|
|
|
+ };
|
|
|
|
+ this.zOrder = 100;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
/**
|
|
/**
|
|
- * 新增多边形顶点
|
|
|
|
- * @param x 点位得x坐标
|
|
|
|
- * @param y 点位得y坐标
|
|
|
|
- * @param i 点位得i坐标
|
|
|
|
- * @return SPoint
|
|
|
|
- */
|
|
|
|
- addPoint(x: number, y: number, i?: number): SPoint {
|
|
|
|
|
|
+ * 储存新的多边形顶点
|
|
|
|
+ * @param x 点位得x坐标
|
|
|
|
+ * @param y 点位得y坐标
|
|
|
|
+ * @param i 储存所在索引
|
|
|
|
+ * @return SPoint
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+ reservePoint(x: number, y: number, i?: number): SPoint {
|
|
const point = new SPoint(x, y);
|
|
const point = new SPoint(x, y);
|
|
if (typeof i == 'undefined') {
|
|
if (typeof i == 'undefined') {
|
|
this.pointList.push(point)
|
|
this.pointList.push(point)
|
|
@@ -100,11 +107,13 @@ export class SPolygonItem extends SGraphyItem {
|
|
return point
|
|
return point
|
|
}
|
|
}
|
|
|
|
|
|
- /** 删除点位
|
|
|
|
-* 新增多边形顶点
|
|
|
|
-* @param i 点位得i坐标
|
|
|
|
-* @return SPoint
|
|
|
|
-*/
|
|
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 删除点位
|
|
|
|
+ * @param i 删除点所在的索引
|
|
|
|
+ * @return SPoint
|
|
|
|
+ */
|
|
|
|
+
|
|
deletePoint(i?: number): SPoint | null | undefined {
|
|
deletePoint(i?: number): SPoint | null | undefined {
|
|
let point = null;
|
|
let point = null;
|
|
if (typeof i != 'undefined') {
|
|
if (typeof i != 'undefined') {
|
|
@@ -119,13 +128,16 @@ export class SPolygonItem extends SGraphyItem {
|
|
}
|
|
}
|
|
return point
|
|
return point
|
|
}
|
|
}
|
|
- /** 移动点位
|
|
|
|
-* 新增多边形顶点
|
|
|
|
-* @param x 点位得x坐标
|
|
|
|
-* @param y 点位得y坐标
|
|
|
|
-* @param i 点位得i坐标
|
|
|
|
-* @return SPoint
|
|
|
|
-*/
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 多边形顶点的移动位置
|
|
|
|
+ * @param x 点位得x坐标
|
|
|
|
+ * @param y 点位得y坐标
|
|
|
|
+ * @param i 点位得i坐标
|
|
|
|
+ * @return SPoint
|
|
|
|
+ */
|
|
|
|
+
|
|
movePoint(x: number, y: number, i: number, ): SPoint | null | undefined {
|
|
movePoint(x: number, y: number, i: number, ): SPoint | null | undefined {
|
|
let point = null;
|
|
let point = null;
|
|
if (this.pointList.length) {
|
|
if (this.pointList.length) {
|
|
@@ -135,7 +147,15 @@ export class SPolygonItem extends SGraphyItem {
|
|
point = this.pointList[i];
|
|
point = this.pointList[i];
|
|
return point
|
|
return point
|
|
}
|
|
}
|
|
- PrintList() {
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 打印出多边形数组
|
|
|
|
+ * @return SPoint[]
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+ PrintPointList(): SPoint[] {
|
|
|
|
+ return this.pointList
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -152,12 +172,14 @@ export class SPolygonItem extends SGraphyItem {
|
|
);
|
|
);
|
|
} // Function boundingRect()
|
|
} // Function boundingRect()
|
|
|
|
|
|
|
|
+
|
|
/**
|
|
/**
|
|
- * 构造函
|
|
|
|
|
|
+ * xyz数据转换为SPoint格式函数;获取外接矩阵参
|
|
*
|
|
*
|
|
* @param arr 外层传入的数据PointList
|
|
* @param arr 外层传入的数据PointList
|
|
*/
|
|
*/
|
|
- _xyzListToSPointList(arr: Point[]) {
|
|
|
|
|
|
+
|
|
|
|
+ protected _xyzListToSPointList(arr: Point[]) {
|
|
if (arr.length) {
|
|
if (arr.length) {
|
|
this.pointList = arr.map(it => {
|
|
this.pointList = arr.map(it => {
|
|
let x = it.X,
|
|
let x = it.X,
|
|
@@ -180,11 +202,14 @@ export class SPolygonItem extends SGraphyItem {
|
|
this.pointList = []
|
|
this.pointList = []
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
/**
|
|
/**
|
|
- * 构造函数 闭合多边形
|
|
|
|
- *
|
|
|
|
- */
|
|
|
|
- _showPolygon(painter: SPainter, pointList: SPoint[]) {
|
|
|
|
|
|
+ * 构造函数 展示多边形轮廓
|
|
|
|
+ *
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+ protected showPolygon(painter: SPainter, pointList: SPoint[]) {
|
|
painter.pen.lineCapStyle = SLineCapStyle.Square;
|
|
painter.pen.lineCapStyle = SLineCapStyle.Square;
|
|
painter.pen.color = this.borderColor;
|
|
painter.pen.color = this.borderColor;
|
|
painter.pen.lineWidth = painter.toPx(this.borderLine);
|
|
painter.pen.lineWidth = painter.toPx(this.borderLine);
|
|
@@ -192,11 +217,13 @@ export class SPolygonItem extends SGraphyItem {
|
|
painter.drawPolygon([...this.pointList]);
|
|
painter.drawPolygon([...this.pointList]);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
/**
|
|
/**
|
|
- * 构造函数 创建多边形
|
|
|
|
- *
|
|
|
|
- */
|
|
|
|
- _createPolygon(painter: SPainter, pointList: SPoint[]) {
|
|
|
|
|
|
+ * 构造函数 创建多边形
|
|
|
|
+ *
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+ protected createPolygon(painter: SPainter, pointList: SPoint[]) {
|
|
painter.pen.lineCapStyle = SLineCapStyle.Square;
|
|
painter.pen.lineCapStyle = SLineCapStyle.Square;
|
|
painter.pen.color = new SColor("#0091FF");
|
|
painter.pen.color = new SColor("#0091FF");
|
|
painter.pen.lineWidth = painter.toPx(4);
|
|
painter.pen.lineWidth = painter.toPx(4);
|
|
@@ -217,12 +244,18 @@ export class SPolygonItem extends SGraphyItem {
|
|
* 构造函数 创建多边形
|
|
* 构造函数 创建多边形
|
|
*
|
|
*
|
|
*/
|
|
*/
|
|
- _editPolygon(painter: SPainter, pointList: SPoint[],point:SPoint) {
|
|
|
|
|
|
+ protected editPolygon(painter: SPainter, pointList: SPoint[], point: SPoint) {
|
|
// 展示多边形
|
|
// 展示多边形
|
|
- this._showPolygon(painter, pointList);
|
|
|
|
|
|
+ this.showPolygon(painter, pointList);
|
|
// 绘制顶点块
|
|
// 绘制顶点块
|
|
|
|
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
////////////以下为鼠标事件
|
|
////////////以下为鼠标事件
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -257,7 +290,7 @@ export class SPolygonItem extends SGraphyItem {
|
|
*/
|
|
*/
|
|
onMouseDown(event: SMouseEvent): boolean {
|
|
onMouseDown(event: SMouseEvent): boolean {
|
|
if (this._status == 2) {
|
|
if (this._status == 2) {
|
|
- this.addPoint(event.x, event.y)
|
|
|
|
|
|
+ this.reservePoint(event.x, event.y)
|
|
}
|
|
}
|
|
|
|
|
|
return true;
|
|
return true;
|
|
@@ -307,13 +340,13 @@ export class SPolygonItem extends SGraphyItem {
|
|
// 当状态为展示状态
|
|
// 当状态为展示状态
|
|
if (this._status == 1) {
|
|
if (this._status == 1) {
|
|
// 闭合多边形
|
|
// 闭合多边形
|
|
- this._showPolygon(painter, this.pointList);
|
|
|
|
|
|
+ this.showPolygon(painter, this.pointList);
|
|
} else if (this._status == 2) {
|
|
} else if (this._status == 2) {
|
|
// 创建状态
|
|
// 创建状态
|
|
- this._createPolygon(painter, this.pointList)
|
|
|
|
|
|
+ this.createPolygon(painter, this.pointList)
|
|
} else {
|
|
} else {
|
|
// 编辑状态
|
|
// 编辑状态
|
|
- this._editPolygon(painter, this.pointList);
|
|
|
|
|
|
+ // this.editPolygon(painter, this.pointList);
|
|
}
|
|
}
|
|
} // Function onDraw()
|
|
} // Function onDraw()
|
|
}
|
|
}
|