| Tertium | 
| Отправлено: 07.04.2004, 11:22 | 
 
 
 | 
 
  
Машинист паровоза 
 
Группа: Почетный участник 
Сообщений: 192 
  
  
 | 
 логика многократной смены кисти и пера
  
Народ, чувствую, что вопрос примитивный, но никак не могу понять, в чём дело. В обработчике onPaint пишу нечто вроде: 
| CODE  |   
 Canvas->Brush->Style=bsSolid; 
 Canvas->Pen->Color=clBlack; 
 Canvas->Brush->Color=clBlack; 
 |  
  
потом рисую всякую фигню и — далее, скажем: 
| CODE  |   
 Canvas->Brush->Style=bsNone; 
 Canvas->Pen->Color=clRed; 
 Canvas->Pen->Style=psDash; 
 Canvas->Brush->Color=clRed; 
 |  
  
и снова рисую. 
Нарисованное выглядит так, что применён только второй блок, но как-то сквозь него просачивается и первый. Ладно. Теперь сначала всё рисую, потом применяю второй блок. Всё кроме стиля линий работает(?). Хорошо же, думаю. Прямо перед рисованием линии пишу: 
| CODE  |   
 //закомментарил смену стиля кисти 
 //Canvas->Brush->Style=bsNone; 
 Canvas->Pen->Color=clRed; 
 Canvas->Pen->Style=psDash; 
 Canvas->Brush->Color=clRed; 
 |  
  
Работает. Если же стиль у кисти задать — стиль пера не проходит. Что за вообще такой глюкодром? Почему тогда Borland пишут, что в канвасе инкапсулировано GDI, когда логика работы какая-то не-GDI-шная? Почему пишут, что при изменении св-в пера и кисти к hdc автоматически делается SelectObject соответствующих HBRUSH и HPEN? Может, конечно, какое-то свойство есть у канваса скрытое, типа NiceWorking, которое надо поставить в true?  ))
  
Заранее спасибо за ответы. 
 | 
 
  | 
 
| Asher | 
| Отправлено: 07.04.2004, 12:22 | 
 
 
 | 
 
 
  
Мастер участка 
 
Группа: Модератор 
Сообщений: 550 
  
  
 | 
 Привет. 
Где взял стиль bsNone? 
в справке только так: 
| QUOTE  |  enum TBrushStyle {bsSolid, bsClear, bsHorizontal, bsVertical, bsFDiagonal, bsBDiagonal, bsCross, bsDiagCross}; 
 |  
 
  
P.S. Сам рисую на канве давно и много — глюков не наблюдал  
 | 
 
  | 
 
| Tertium | 
| Отправлено: 07.04.2004, 21:58 | 
 
 
 | 
 
  
Машинист паровоза 
 
Группа: Почетный участник 
Сообщений: 192 
  
  
 | 
 имелся ввиду bsClear, но даже не в этом дело. дело в том, что рисую линию, потом меняю перо, а линия выглядит уже нарисованной этим пером. Я на канве в дельфях года четыре назад тоже вроде рисовал без проблем... Но тогда я не был испорчен ещё программмированием под живой GDI в вижл студии   Так что, неважно когда применять перо?....
 | 
 
  | 
 
| Tertium | 
| Отправлено: 07.04.2004, 22:10 | 
 
 
 | 
 
  
Машинист паровоза 
 
Группа: Почетный участник 
Сообщений: 192 
  
  
 | 
 Кто бы мог подумать! Ай да борланд. С использованием новейших технологий компьютерной индустрии стало возможно решить некоторые проблемы в исходном коде простой перезагрузкой компьютера!  
  
Проблема снимается. Неужели его так глючит? Я код не менял, а оно заработало:)
 | 
 
  | 
 
  |