Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
14-1109344932
Soft
2005-02-25 18:22
2005.03.20
Предлагаю сделать на форуме раздел newbie-delphi


14-1109285890
Vasya.ru
2005-02-25 01:58
2005.03.20
Пятничные задачки или типа того


14-1109604649
AG.Smit
2005-02-28 18:30
2005.03.20
Проблема с мобилой Sony Ericsson T610


1-1109948600
вопрос
2005-03-04 18:03
2005.03.20
Надо из компонента узнать, что в форме выполнилось событие


3-1108641488
LEONardo
2005-02-17 14:58
2005.03.20
Обработка двух групповых функций





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский