用图纸启动面板

时间:2014-10-24 04:57:29

标签: c#

我现在正在向面板绘制一些点,以指示一种带有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);
            }
        }
    }

困扰我的是,当应用程序启动时,我可以看到面板上绘制的点。即使它很快,它仍然困扰我很多。

是否可以在面板上绘制点并直接加载它?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

你可以创建一个位图并改为绘制它。

但在你这样做之前:DrawEllipse有点贵。使用DrawLinePen使用虚线样式代替:

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,因此我不会泄漏PenClientSize,所以我只使用内部宽度。另请注意MSDN

上有关自定义DashPattern的说明