我想将线的坐标存储在c#的列表中。我创建了一个列表:
List<int> lijst = new List<int>();
,我想在该列表中存储以下行:
canvas.DrawLine(pen,xStart,yStart,yStart - Height);
canvas.DrawLine(pen,xStart + Width,yStart);
canvas.DrawLine(pen,yStart - Height,yStart - Height);
我该怎么做?
我想将线的坐标存储在c#的列表中。我创建了一个列表:
List<int> lijst = new List<int>();
,我想在该列表中存储以下行:
canvas.DrawLine(pen,xStart,yStart,yStart - Height);
canvas.DrawLine(pen,xStart + Width,yStart);
canvas.DrawLine(pen,yStart - Height,yStart - Height);
我该怎么做?
使用DrawLineItem列表
var lijst = new List<DrawLineItem>();
DrawLineItem类
public class DrawLineItem
{
public Pen Pen { get; set; }
public int StartX { get; set; }
public int StartY { get; set; }
public int EndX { get; set; }
public int EndY { get; set; }
public DrawLineItem(Pen pen,int startX,int startY,int endX,int endY)
{
Pen = pen;
StartX = startX;
StartY = startY;
EndX = endX;
EndY = endY;
}
}
如果不允许修改,则可以删除设置器。
如果需要,您可以将int
替换为single
。
如果不需要,您可以删除Pen
。
如果需要使用一些重载的Point
方法,则可以对PointF
或DrawLine
使用相同的模式。
用法
lijst.Add(new DrawLineItem(pen,xStart,yStart,yStart - Height));
lijst.Add(new DrawLineItem(pen,xStart + Width,yStart));
lijst.Add(new DrawLineItem(pen,yStart - Height,yStart - Height));
建议
例如,您应重命名lijst
中不干净的名称listDrawLines
。
例如,您可以做这样的事情:
foreach ( var item in listDrawLines )
canvas.DrawLine(item.Pen,item.StartX,item.StartY,item.EndX,item.EndY);
,
使用
var lijst = new List<(Pen,Point,Point)>();
其中Point是System.Drawing.Point
,public abstract class Shape
{
protected string description;
protected Color edgeColor;
protected Pen pen;
public Weergave Weergave;
//public line lijnen;
//public List<int> lijst;
public virtual void Draw(ShapeDisplay sd,Graphics canvas)
{
// we define a uniform pen size for all shapes
//pen = new Pen(this.edgeColor,3);
Weergave.Draw1(sd,canvas);
}
}
public abstract class Weergave
{
protected Color randkleur;
protected Pen pen;
public virtual void Draw1(ShapeDisplay sd,Graphics canvas)
{
pen = new Pen(this.randkleur,3);
}
}
public class Graphical : Weergave
{
public override void Draw1(ShapeDisplay sd,Graphics canvas)
{
foreach (var item in)
}
}
在操作'weergave.draw1(sd,canvas)中,另一个类被调用。 “ weergave”类。在此类中,应绘制矩形或形状的实际线条