| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка 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 когда теряет фокус - линии пропадают |
| Автор: 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 |
| Если с этими массивами все в порядке, то ошибка в другом месте. Предложение "побольше кода" остается в силе |
| Автор: strader75 21.2.2007, 10:23 |
| нашел , двойной буфер делал проблему пришлось в ручную настраивать |
| Автор: Idsa 21.2.2007, 13:15 |
| Поделись решением, интересно же, в чем была ошибка. |
| Автор: strader75 25.2.2007, 10:12 |
| ошибка была в прорисовке добавочные линии создавались в буферной зоне и надо было сделать RENDER на прорисовку для каждой перерисовки контрола |