Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: 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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.026 c
1-1109924793
Alexandre
2005-03-04 11:26
2005.03.20
Скрытие формы


14-1109236405
Cosinus
2005-02-24 12:13
2005.03.20
Проблемма с загрузкой Windows 2000...


14-1109589900
1008
2005-02-28 14:25
2005.03.20
Или я чего-то не понял или что-то не работает.


14-1109668797
ex080D:07BBh
2005-03-01 12:19
2005.03.20
Что будете дарить на 8 марта своим девушкам?


9-1103914428
Макс
2004-12-24 21:53
2005.03.20
L3dt 2.2