Вниз
Скачать: CL | DM;

Как залить регион окна прозрачной кистью ?   Найти похожие ветки 

 
Skier ©   (2005-02-07 14:11) [0]

мои варианты :

1)
LOGBRUSH.lbStyle := BS_NULL;
ABrush := CreateBrushIndirect(LOGBRUSH);
SetBkMode(ABrush, TRANSPARENT);

2)
ABrush := GetStockObject(NULL_BRUSH);

а потом
ADC := GetWindowDC(Handle);
FillRgn(ADC, FExcludeRegion, ABrush);

FExcludeRegion - регион, который нужно залить, он уже создан здесь...

В чём ошибка ?


 
MBo ©   (2005-02-07 14:36) [1]

Заливка нулевой кистью, насколько я понимаю, равнозначна ничегонеделанию в обработчике WM_ERASEBKGND

в 1. - SetBkMode применяется к контексту, а не к кисти
в 2. - для чего получать контекст от окна, если, например, в BeginPaint он и так есть. Если случай нетривиальный, разъясни обстановку


 
Skier ©   (2005-02-07 14:56) [2]

>MBo ©   (07.02.05 14:36) [1]

> Если случай нетривиальный, разъясни обстановку

Я хочу окно разбить на две части :
первая часть ведёт себя как обычное окно, а во второй (верхней части) мне нужно просто выводить некий текст (caption), но так чтобы эта верхняя область не заливалась бы цветом фона...
(окно наследуется от TCustomPanel...)


> Заливка нулевой кистью, насколько я понимаю, равнозначна
> ничегонеделанию в обработчике WM_ERASEBKGND

Пробовал не помогает...


 
MBo ©   (2005-02-07 15:08) [3]

>окно наследуется от TCustomPanel
т.е. VCL-проект, не "чисто АПИ"?

>но так чтобы эта верхняя область не заливалась бы цветом фона...
хорошо бы поподробнее. Не уловил пока.

Область под текстом должна быть прозрачной до самого рабочего стола или как?


 
Skier ©   (2005-02-07 15:23) [4]

>MBo ©   (07.02.05 15:08) [3]

> т.е. VCL-проект, не "чисто АПИ"?

угу. VCL-проект.


> Область под текстом должна быть прозрачной до самого рабочего
> стола или как?

нет. не до рабочего стола...т.е. если мы "проносим" этот контрол над другим, у которого тот же родитель, но этот контрол должен
закрываться только текстом caption"а (т.е. текста в верхней области окна), а не всей областью, в которой этот caption рисуется...


 
MBo ©   (2005-02-07 16:57) [5]

Контролы с Transparent  работают так - из ControlStyle исключено cs_Opaque, при перерисовке вызывается InvalidateRect c флагом, приводящим к отмене вызова WM_ERASEBKGND.

Для текста с прозрачным фоном достаточно SetBkMode или Brush.Style:=bsClear, но при перемещении текста возникнут проблемы, связанные со стиранием старого текста - придется запоминать соотв. участок подложки.



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.025 c
4-1107837128
Grief
2005-02-08 07:32
2005.03.20
Popup Menu


1-1110041315
Leeechhhh
2005-03-05 19:48
2005.03.20
Как сделать чтоб длинна формы равнялась длинне строки


14-1109835918
syte_ser78
2005-03-03 10:45
2005.03.20
QuickRep


1-1109933326
MTsv DN
2005-03-04 13:48
2005.03.20
LIB -> OBJ


1-1110058906
Davinchi
2005-03-06 00:41
2005.03.20
Как Variant привести к TComponent или TWinControl




   Наверх