C # Рисование прямоугольника - PullRequest
0 голосов
/ 01 февраля 2019

Я создал 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();.

...