我已经创建了一个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();
时它会闪烁。