188 lines
3.6 KiB
C#
188 lines
3.6 KiB
C#
|
||
using DrawGraph;
|
||
using Newtonsoft.Json;
|
||
using System;
|
||
using System.Drawing;
|
||
using System.Linq;
|
||
|
||
|
||
namespace DrawGraph
|
||
{
|
||
[JsonObject(MemberSerialization.OptOut)]
|
||
[Serializable]
|
||
public class LinesPackObj : PackObjBase
|
||
{
|
||
private double xPageSpan = 3.0;
|
||
|
||
private double xMajorGridStep = 1.0;
|
||
|
||
private int lineCount = 1;
|
||
|
||
private ELineType lineType = ELineType.Vertical;
|
||
|
||
private int lineWidth = 1;
|
||
|
||
private string noDrawLineStr = "";
|
||
|
||
private Color lineColor = Color.Black;
|
||
|
||
public ELineType LineType
|
||
{
|
||
get
|
||
{
|
||
return this.lineType;
|
||
}
|
||
set
|
||
{
|
||
this.lineType = value;
|
||
}
|
||
}
|
||
|
||
public double XMajorGridStep
|
||
{
|
||
get
|
||
{
|
||
return this.xMajorGridStep;
|
||
}
|
||
set
|
||
{
|
||
this.xMajorGridStep = value;
|
||
}
|
||
}
|
||
|
||
public double XPageSpan
|
||
{
|
||
get
|
||
{
|
||
return this.xPageSpan;
|
||
}
|
||
set
|
||
{
|
||
this.xPageSpan = value;
|
||
}
|
||
}
|
||
|
||
public Color LineColor
|
||
{
|
||
get
|
||
{
|
||
return this.lineColor;
|
||
}
|
||
set
|
||
{
|
||
this.lineColor = value;
|
||
}
|
||
}
|
||
|
||
[ClassAttributs(Description = "线粗细")]
|
||
public int LineWidth
|
||
{
|
||
get
|
||
{
|
||
return this.lineWidth;
|
||
}
|
||
set
|
||
{
|
||
this.lineWidth = value;
|
||
}
|
||
}
|
||
|
||
[ClassAttributs(CName = "不画的线集合", Description = "不画的线集合,以逗号分隔")]
|
||
public string NoDrawLineStr
|
||
{
|
||
get
|
||
{
|
||
return this.noDrawLineStr;
|
||
}
|
||
set
|
||
{
|
||
this.noDrawLineStr = value;
|
||
}
|
||
}
|
||
|
||
public LinesPackObj(ZedGraphControl zgc, PackObjManager poManager) : base(zgc, poManager)
|
||
{
|
||
this.baseZed = zgc;
|
||
base.PackText = "直线集合" + this.index.ToString();
|
||
}
|
||
|
||
public override void Draw()
|
||
{
|
||
bool flag = this.baseZed == null;
|
||
if (!flag)
|
||
{
|
||
this.Clear();
|
||
Color red = this.lineColor;
|
||
bool isSelect = base.IsSelect;
|
||
if (isSelect)
|
||
{
|
||
red = Color.Red;
|
||
}
|
||
this.lineCount = (int)Math.Floor(this.xPageSpan / this.xMajorGridStep);
|
||
string[] source = this.NoDrawLineStr.Replace(",", ",").Split(new char[]
|
||
{
|
||
','
|
||
});
|
||
int i = 0;
|
||
while (i < this.lineCount)
|
||
{
|
||
bool flag2 = this.NoDrawLineStr != "";
|
||
if (!flag2)
|
||
{
|
||
goto IL_C2;
|
||
}
|
||
string text = source.FirstOrDefault((string s) => s == (i + 1).ToString());
|
||
bool flag3 = text != null;
|
||
if (!flag3)
|
||
{
|
||
goto IL_C2;
|
||
}
|
||
IL_1F6:
|
||
int j = i;
|
||
i = j + 1;
|
||
continue;
|
||
IL_C2:
|
||
bool flag4 = this.LineType == ELineType.Vertical;
|
||
if (flag4)
|
||
{
|
||
float num = base.RealX + (float)(i + 1) * ((base.RealEndX - base.RealX) / (float)this.lineCount);
|
||
bool flag5 = i < this.lineCount - 1;
|
||
if (flag5)
|
||
{
|
||
ZUtil.DrawLineWidth((double)num, (double)base.RealY, (double)num, (double)base.RealEndY, this.baseZed, base.PackTag + "-" + i.ToString(), red, this.LineWidth);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
bool flag6 = this.LineType == ELineType.Horizontal;
|
||
if (flag6)
|
||
{
|
||
float num2 = base.RealY + (float)(i + 1) * ((base.RealEndY - base.RealY) / (float)this.lineCount);
|
||
bool flag7 = i < this.lineCount - 1;
|
||
if (flag7)
|
||
{
|
||
ZUtil.DrawLineWidth((double)base.RealX, (double)num2, (double)base.RealEndX, (double)num2, this.baseZed, base.PackTag + "-" + i.ToString(), red, this.LineWidth);
|
||
}
|
||
}
|
||
}
|
||
goto IL_1F6;
|
||
}
|
||
base.Refresh();
|
||
}
|
||
}
|
||
|
||
public override void Clear()
|
||
{
|
||
for (int i = 0; i < this.lineCount; i++)
|
||
{
|
||
GraphObj graphObj = this.baseZed.MasterPane.GraphObjList[base.PackTag + "-" + i.ToString()];
|
||
bool flag = graphObj != null;
|
||
if (flag)
|
||
{
|
||
this.baseZed.MasterPane.GraphObjList.Remove(graphObj);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|