C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Логика многократной смены кисти и пера
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? smile.gif))

Заранее спасибо за ответы.
Asher
Отправлено: 07.04.2004, 12:22


Мастер участка

Группа: Модератор
Сообщений: 550



Привет.
Где взял стиль bsNone?
в справке только так:
QUOTE
enum TBrushStyle {bsSolid, bsClear, bsHorizontal, bsVertical, bsFDiagonal, bsBDiagonal, bsCross, bsDiagCross};


P.S. Сам рисую на канве давно и много — глюков не наблюдал biggrin.gif
Tertium
Отправлено: 07.04.2004, 21:58


Машинист паровоза

Группа: Почетный участник
Сообщений: 192



имелся ввиду bsClear, но даже не в этом дело. дело в том, что рисую линию, потом меняю перо, а линия выглядит уже нарисованной этим пером. Я на канве в дельфях года четыре назад тоже вроде рисовал без проблем... Но тогда я не был испорчен ещё программмированием под живой GDI в вижл студии smile.gif Так что, неважно когда применять перо?....
Tertium
Отправлено: 07.04.2004, 22:10


Машинист паровоза

Группа: Почетный участник
Сообщений: 192



Кто бы мог подумать! Ай да борланд. С использованием новейших технологий компьютерной индустрии стало возможно решить некоторые проблемы в исходном коде простой перезагрузкой компьютера! smile.gif

Проблема снимается. Неужели его так глючит? Я код не менял, а оно заработало:)

Вернуться в Вопросы программирования в C++Builder