Я создал ListView и получил данные из ListView, чтобы нарисовать прямоугольник.Количество элементов ListView всегда изменяется с неизвестным количеством, а также с x и y.Мой ListView будет выглядеть так:
Subitem[0].Text || Subitem[1].text
500 100
100 200
++ ++
By Subitem[0] is X ,Subitem[1] is Y
И теперь я должен создать код для рисования прямоугольника следующим образом:
private void Draw_Tick(object sender, EventArgs e)
{
this.Invalidate();
Pen p = new Pen(Color.Red);
SolidBrush sb = new SolidBrush(Color.Red);
Graphics g = PaintingPanel.CreateGraphics();
for (int i = 0; i < ListView1.Items.Count + 1; i++)
{
p.Width = 3;
g.SmoothingMode = SmoothingMode.HighSpeed;
g.InterpolationMode = InterpolationMode.Low;
g.PixelOffsetMode = PixelOffsetMode.HighSpeed;
Rectangle rectf = new Rectangle(X.Split(',')[i],Y.Split(',')[i], 50, 75);
g.DrawRectangle(p,rectf);
}
}
Добавьте X иY в массив
Public static string X;
Public static string Y;
for (int i = 0; i < ListView1.Items.Count + 1; i++)
{
List<string> ls = new List<string>();
foreach (ListViewItem item in ListView1.Items)
{
ls.Add(item.SubItems[0].Text);
}
X = string.Join(",", ls);
}
for (int i = 0; i < ListView1.Items.Count + 1; i++)
{
List<string> ls2 = new List<string>();
foreach (ListViewItem item in ListView1.Items)
{
ls2.Add(item.SubItems[1].Text);
}
Y = string.Join(",", ls2);
}
Но я хочу сказать, что я использовал this.Invalidate()
, чтобы очистить чертеж и создать новый чертеж, потому что данные изменились.Мой вопрос заключается в том, как я могу просто переместить прямоугольник вместо использования this.invalidate
для очистки чертежа (потому что он мигает, когда this.Invalidate();
.