在课程的顶部,我做了:
public static int redlinerectwidth= 0;
public static int redlinerectheight = 0;
public static int redlinerectx = 0;
public static int redlinerecty = 0;
然后在一个方法中,我从一个表格中调用它来移动一条画线:
foreach (PointF pt in MovingPoints)
{
if (clouds != null)
{
e.FillEllipse(Brushes.Red, (pt.X + distance) , pt.Y , 2f, 2f);
} }
最后在表格中我知道整个操作何时结束,此时我想构建一个红线矩形。
所以它就像一个矩形。
在form1 top中,我添加了:
private Rectangle redlinerectangle;
在form1中,我有一个后台工作者,此时操作结束:
if (counter == PaddingPoints.distancetoscan)
{
counter = 0;
CloudEnteringAlert.ClearList();
padrectangle = PaddingPoints.rect;
break;
}
当操作结束时,我想从类中的4个变量构建redlinerectangle。
如何从foreach循环中获取clas的数据,最后创建矩形?
修改
或者更好的是在顶部和底部绘制一条线,这样它看起来就像一个矩形,一旦向右移动,矩形就会变大。 +距离使X坐标向右移动。
我正在绘制点,因为List MovingPoints有许多点,它看起来像一条移动的红线。 但我所看到的是一条红线停留在原地,另一条直线移动到正确的距离,达到了之前的一些价值。
foreach(PointsInt中的Point pt) { e.FillEllipse(Brushes.Red,pt.X *(float)currentFactor,pt.Y *(float)currentFactor,2f,2f); }
首先我画了一条红线然后我正在使用MovingPoints列表和距离将另一条线移到右边。
我怎样才能使那个带有MovigPoints foreach循环的第二条红线向右移动,因为当它向右移动时会实时构建的isctangle?
这是截止操作结束时有两条红线。 左边的那个是起点而不是移动。右边是从左到右移动。我需要当第二行向右移动时,它会显示一条顶部和底部线条,当它向右移动时会加速。
所以最后我会有一个矩形。 例如,一个变量名称rect,它将是在右行移动时由两条线实时绘制的矩形。
答案 0 :(得分:1)
请不要将 foreach 两者称为画线。当你移动一次线时绘制矩形:
Pen myPen = new Pen(Brushes.Red, 2);
float x, y width, height;
y = PointsInt.Min(p => p.Y);
PointF pointsIntMin = PointsInt.First(p => p.Y == y); //point with minimum Y in PointsInt list
y = PointsInt.Max(p => p.Y);
PointF pointsIntMax = PointsInt.First(p => p.Y == y); //point with maximum Y in PointsInt list
y = MovingPoints.Min(p => p.Y);
PointF movingPointsMin = MovingPoints.First(p => p.Y == y); //point with minimum Y in MovingPoints list
y = MovingPoints.Max(p => p.Y);
PointF movingPointsMax = PointsInt.First(p => p.Y == y); //point with minimum Y in MovingPoints list
x = pointsIntMin.X * (float)currentFactor;
y = pointsIntMin.Y * (float)currentFactor;
width = movingPointsMin.X + distance - x
height = (pointsIntMax.Y - pointsIntMin.Y) * (float)currentFactor;
if (clouds != null)
{
e.DrawRectangle(myPen, (int)x, (int)y, (int)width, (int)height);
}
myPen.Dispose();
瓦尔特