C#绘图矩形

时间:2019-02-01 18:02:35

标签: c# graphics system.drawing

我已经创建了一个ListView并从ListView获取数据以绘制一个矩形。 ListView项目计数始终随未知计数而变化,并且x和y也是如此。我的ListView会像这样:

Subitem[0].Text || Subitem[1].text
500                100
100                200
++                 ++

通过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();时它会闪烁。

0 个答案:

没有答案