Главная страница
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.016 c
4-86220
KUZIA
2002-11-12 13:10
2002.12.26
Как написать скринсавер


1-85953
Alexey1917
2002-12-15 14:37
2002.12.26
RGB палитра


1-85925
Nimda
2002-12-17 11:05
2002.12.26
Ne ponal.


3-85839
krammer
2002-12-06 20:55
2002.12.26
Почему фильтр


1-86022
Егор
2002-12-16 15:01
2002.12.26
Границы видимой обл. оси TChart при масштабировании