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

Вниз

Не рисует! Помогите пожалуйста   Найти похожие ветки 

 
Cheshit ©   (2002-12-14 18:55) [0]

Наверно очень просто, но что-то упустил:

procedure DrawRFrame
(DC:HDC;Arect:TRect;AColor:TColor;offset:integer);
var ABr:HBRUSH;
ORgn,IRgn,DRgn:HRgn;
begin
SaveDc(DC);
ABr:=CreateSolidBrush(AColor);
ORgn:=CreateRoundRectRgn(ARect.Left-1,ARect.Top-,Arect.Right-1,Arect.Bottom-1,5,5);
InflateRect(ARect,-offset,-offset);
IRgn:=CreateRoundRectRgn(ARect.Left,ARect.Top,Arect.Right,Arect.Bottom,5,5);
CombineRgn(DRgn,ORgn,IRgn,RGN_DIFF);
SelectObject(DC,ABR);
PaintRgn(DC,DRGN);
RestoreDc(DC,-1);
end;


 
MBo ©   (2002-12-15 06:37) [1]

procedure DrawRFrame
(DC:HDC;Arect:TRect;AColor:TColor;offset:integer);
var ABr:HBRUSH;
ORgn,IRgn:HRgn;
begin
ABr:=CreateSolidBrush(AColor);
ORgn:=CreateRoundRectRgn(ARect.Left-1,ARect.Top-1,Arect.Right-1,Arect.Bottom-1,5,5);
InflateRect(ARect,-offset,-offset);
IRgn:=CreateRoundRectRgn(ARect.Left,ARect.Top,Arect.Right,Arect.Bottom,5,5);
CombineRgn(IRgn,ORgn,IRgn,RGN_DIFF);
FillRgn(DC,IRGN,ABR);
DeleteObject(ABR);
DeleteObject(IRGN);
DeleteObject(ORGN);
end;

1) Главная ошибка - приемный регион для CombineRgn должен существововать! Здесь начальные регионы больше не нужны, поэтому я использовал один из них. Иначе нужно для этого создать, например, прям. регион 1х1.
2) Ни к чему здесь сохранять и восстанавливать контекст - это затратная процедура. При выборе, например, новой кисти, нужно запоминать значение старой (возвращаемое SelectObject), и в конце восстанавливать
3) FillRgn вместо PaintRgn позволило и без этого обойтись
4) Обязательно надо уничтожать созданные тобой объекты GDI



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

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

Наверх




Память: 0.47 MB
Время: 0.014 c
14-86116
JC
2002-12-04 01:23
2002.12.26
Need Help


4-86216
NF
2002-11-08 14:39
2002.12.26
Как узнать имя приложения?


14-86079
Кокандокало
2002-12-06 14:35
2002.12.26
Чем сжимать программы на дельфи ?


6-86052
Repeater
2002-10-30 17:09
2002.12.26
Как ждать ответа от сокета?


14-86084
Феликс
2002-12-07 16:40
2002.12.26
Вопрос по прокси