Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > когда DoubleBuffer у контрола тот не рисует линии


Автор: strader75 19.2.2007, 12:05
Точнее рисует , но показывает только по фокусу , а надо все время
помогите сделать

Автор: mr.DUDA 19.2.2007, 12:45
Покажите нерабочий код.

Автор: strader75 19.2.2007, 13:07
private void OnPaint(object sender, System.Windows.Forms.PaintEventArgs e)
        {          
            Draw();            
        }
 public void Draw()
        {                            
                Pen P = new Pen(Brushes.Orange);
                P.Color = Color.Black;
                P.DashStyle = DashStyle.Dash;

                g.DrawPath(P, TableLines());            
        }

        GraphicsPath TableLines()
        {
            int V;
            GraphicsPath path = new GraphicsPath();
            if (CHLine.Count != 0)
                foreach (int Key in CHLine.Keys)
                {
                    V = (int)CHLine.GetByIndex(Key);
                    path.AddRectangle(new Rectangle(0, V, this.Width, 1));
                }
            if (CVLine.Count != 0)
                foreach (int Key in CVLine.Keys)
                {
                    V = (int)CVLine.GetByIndex(Key);
                    path.AddRectangle(new Rectangle(V, 0, 1, this.Height));
                  }
            return path;
        }

Добавлено @ 13:08 
когда теряет фокус - линии пропадают  smile 

Автор: strader75 19.2.2007, 15:04
И перекрытые участки не перерисовывает

А без DoubleBuffer мигает , но все видно и перерисовка нормальная

Автор: Idsa 19.2.2007, 15:42
Меня вообще смущает вышеприведенный код. Где инициализируется переменная g? Если она должна инициализироваться в onPaint, то не хватает строчки Graphics g = e.Graphics.

Автор: strader75 19.2.2007, 19:15
переменная g инициализируется в onPaint от e.graphics

Автор: Idsa 19.2.2007, 20:18
Побольше бы кода. Что за CVLine, CHLine?

Автор: strader75 20.2.2007, 11:14
масивы офсэтов для вертикальных и горизонтальных линий

Автор: Idsa 20.2.2007, 12:59
Если с этими массивами все в порядке, то ошибка в другом месте. Предложение "побольше кода" остается в силе  smile 

Автор: strader75 21.2.2007, 10:23
нашел , двойной буфер делал проблему
пришлось в ручную настраивать 

Автор: Idsa 21.2.2007, 13:15
Поделись решением, интересно же, в чем была ошибка.

Автор: strader75 25.2.2007, 10:12
ошибка была в прорисовке
добавочные линии создавались в буферной зоне и надо было сделать RENDER на прорисовку для каждой перерисовки контрола

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)