Как сохранить координаты линии в списке? - PullRequest
1 голос
/ 08 ноября 2019

Я хочу сохранить координаты линий в списке в c #. Я создал список:

List<int> lijst = new List<int>();

и хочу сохранить в этом списке следующие строки:

canvas.DrawLine(pen, xStart, yStart, xStart, yStart - Height);
canvas.DrawLine(pen, xStart, yStart, xStart + Width, yStart);
canvas.DrawLine(pen, xStart, yStart - Height, xStart + Width, yStart - Height);
canvas.DrawLine(pen, xStart + Width, yStart, xStart + Width, yStart - Height); 

Как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 08 ноября 2019

Использование списка 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, xStart, yStart - Height));
lijst.Add(new DrawLineItem(pen, xStart, yStart, xStart + Width, yStart));
lijst.Add(new DrawLineItem(pen, xStart, yStart - Height, xStart + Width, yStart - Height));
lijst.Add(new DrawLineItem(pen, xStart + Width, yStart, xStart + Width, yStart - Height));

Советы

Вы должны переименовать, например, lijst, что является нечистым именем в listDrawLines.

Так, например, вы можете сделать следующее:

foreach ( var item in listDrawLines )
  canvas.DrawLine(item.Pen, item.StartX, item.StartY, item.EndX, item.EndY);
0 голосов
/ 10 ноября 2019
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. В этом классе должны быть нарисованы реальные линии из прямоугольника или формы

0 голосов
/ 08 ноября 2019

используйте

var lijst = new List<(Pen, Point, Point)>();

, где Point - System.Drawing.Point

...