Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.03;
Скачать: CL | DM;

Вниз

Рисование любым цветом на DC   Найти похожие ветки 

 
ZEE ©   (2002-12-29 22:33) [0]

Подскажите, плиз, как на DC рисовать линии любым цветом?
Я делаю так:
DC1:hDC;
TmpBmp1,Bmp1:hBitmap;
R:TRect;
...
GetWindowRect(WndHandle,R);
DC1:=CreateCompatibleDC(GetDC(WndHandle)); TmpBmp1:=CreateCompatibleBitmap(GetDC(WndHandle), R.Right-R.Left, R.Bottom-R.Top);
Bmp1:=SelectObject(DC1,TmpBmp1);
FillRect(DC1,R,GetStockObject(BLACK_BRUSH));
SelectObject(DC1,GetStockObject(WHITE_PEN));

и дальше рисую - все ОК, но! только одним цветом белым (WHITE_PEN), а надо рисовать любым цветом, например rgb(128,134,75)
пробовал так:
xpen:HPen;
...
//вместо последней строки в предыдущем фрагменте
xpen:=CreatePen(PS_SOLID,1,rgb(128,134,75));
SelectObject(DC1,xpen);
...
DeleteObject(xpen);

начинаю рисовать - все ОК, куча цветов, но если пройти этот кусок кода несколько раз - "рисование" прекращается.
Подскажите, где тут за грабли...


 
MBo ©   (2002-12-30 07:16) [1]

перед DeleteObject(xpen) надо выбрать в DC старое перо (его получают при таком вызове: OldPen:=SelectObject(DC1,xpen);), поскольку выбранные в контексте объекты (большинство типов гр. объектов) не уничтожаются, что, видимо, и приводит к переполнению таблицы объектов GDI



Страницы: 1 вся ветка

Текущий архив: 2003.04.03;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.044 c
4-6834
zedov
2003-02-01 14:40
2003.04.03
запихнуть dll в эксешник без формы


1-6447
TankMan
2003-03-17 00:04
2003.04.03
Если ли функции сложения, вычитания или получения разницы между..


4-6862
Spider-Lex
2003-02-06 06:54
2003.04.03
Как нажать NumLock?


4-6858
Unknown user
2003-02-04 20:39
2003.04.03
Как определить есть ли дискета в дисководе


14-6688
NetBreaker666
2003-03-18 22:07
2003.04.03
Каким образом создать Popup меню в стиле WinXP