Главная страница
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.041 c
14-1109514597
Qwatrbe4
2005-02-27 17:29
2005.03.20
Домен+хостинг


3-1108635749
Vasek
2005-02-17 13:22
2005.03.20
Остановка запуск FireBird сервера


14-1109657276
Карелин Артем
2005-03-01 09:07
2005.03.20
Условия работы в IT-конторах.


1-1110129911
ser35
2005-03-06 20:25
2005.03.20
DBEdit как Maskedit


4-1107761079
pavel_guzhanov
2005-02-07 10:24
2005.03.20
Использование чекового термопринтера