2014-10-24 3 views
-1

Теперь я рисую на панели несколько точек, чтобы указать разновидность точечной сетки с 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

Можно создать растровое изображение и нарисовать его вместо этого.

Но прежде чем вы это сделаете: DrawEllipse стоит немного дороже. Используйте DrawLine с Pen, который имеет точечную LineStyle вместо:

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 поэтому я использую только внутреннюю ширину. Также обратите внимание на exaplanation о таможне DashPattern на MSDN

+0

Хорошо, теперь я понимаю, что я жаловался на что-то, вызванное моим ужасным программированием. Спасибо за помощь .. он работает точно так, как я хотел, хотя я думаю, что мне нужно понять, как он может рисовать по всей панели, а не только на одной строке. Я буду проверять клиентов и использовать их для понимания. – mstation

+0

См. Крошечную коррекцию ('onePercentWidth -1};'). - Он рисует несколько строк по всей панели, каждый из которых имеет точечный стиль, который идеально подходит для интервала линий. (Я сохраняю одну пару фигурных скобок после цикла for, на самом деле не рекомендуемый стиль кодирования.) - Но да, у Drawing есть много трюков, ловушек и чудес в любом месте. Удачи, изучая это! – TaW

Смежные вопросы