Форум: "WinAPI";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
ВнизКак залить регион окна прозрачной кистью ? Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c