我现在正在向面板绘制一些点,以指示一种带有1%总面板宽度边距的虚线网格。
这就是我现在正在做的事情:
private void panel1_Paint(object sender, PaintEventArgs e)
{
Pen my_pen = new Pen(Color.Gray);
int x,y;
int k = 1 ,t = 1;
int onePercentWidth = panel1.Width / 100;
for (y = onePercentWidth; y < panel1.Height-1; y += onePercentWidth)
{
for (x = onePercentWidth; x < panel1.Width-1; x += onePercentWidth)
{
e.Graphics.DrawEllipse(my_pen, x, y, 1, 1);
}
}
}
困扰我的是,当应用程序启动时,我可以看到面板上绘制的点。即使它很快,它仍然困扰我很多。
是否可以在面板上绘制点并直接加载它?
感谢您的帮助
答案 0 :(得分:1)
你可以创建一个位图并改为绘制它。
但在你这样做之前:DrawEllipse
有点贵。使用DrawLine
与Pen
使用虚线样式代替:
int onePercentWidth = panel1.ClientSize.Width / 100;
using (Pen my_pen = new Pen(Color.Gray, 1f))
{
my_pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Custom;
my_pen.DashPattern = new float[] { 1F, onePercentWidth -1 };
for (int y = onePercentWidth; y < panel1.ClientSize.Height - 1; y += onePercentWidth)
e.Graphics.DrawLine(my_pen, 0, y, panel1.ClientSize.Width, y);
}
请注意,我使用的是using
,因此我不会泄漏Pen
和ClientSize
,所以我只使用内部宽度。另请注意MSDN
DashPattern
的说明