Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
 Аватар для Mr.Sandman
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552

Прозрачность только для Image, а не для всей формы

04.03.2012, 20:18. Показов 3931. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код:
C++
1
2
3
4
5
int Transparency = 50;
long ExtStyle = GetWindowLong(Handle, GWL_EXSTYLE);
SetWindowLong(Handle, GWL_EXSTYLE, ExtStyle | WS_EX_LAYERED);
::SetLayeredWindowAttributes(Handle, 0 , (255 * Transparency) / 100,
LWA_ALPHA); // прозрачность
Все отлично работает, вот только эта прозрачность влияет сразу и на форму и на находящийся на ней image, вот как сделать что бы код работал только для Image ?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.03.2012, 20:18
Ответы с готовыми решениями:

Как отдельно установить прозрачность для объектов формы
И так всем привет, вот мой вопрос Мне нужно что бы форму не было видно это параметр Opacity но когда я ставлю 0% Все объекты тоже...

Прозрачность формы, чтобы были видны только контроллы
Приветствую формучане:D Хотел бы узнать как сделать прозрачную форму,просто чтобы кнопочки и другие объекты летали в воздухе:3

Есть 4 формы и 4 файла обработчика для каждой. Срабатывает только последний для всех форм. Почему?
Вот ссылка на сайт сайт-------

14
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
04.03.2012, 21:00
Смотря, какая прозрачность нужна от картинки - через нее должна просвечивать родительская форма или то, что под формой: другие окна, рабочий стол?
1
 Аватар для Mr.Sandman
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
04.03.2012, 21:23  [ТС]
Вот что бы форму вообще не было видно, а image просвечивал раб стол!
0
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
04.03.2012, 21:38
Прозрачная форма
Ты же смотрел уже это что там тебе не подошло?
0
 Аватар для Mr.Sandman
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
04.03.2012, 21:49  [ТС]
Ну яж написал, что код прекрасно работает, вот только как бы сделать что бы он работал только для image. А он просвечивает и форму и Image.
Цитата Сообщение от Gleban38 Посмотреть сообщение
эта прозрачность влияет сразу и на форму и на находящийся на ней image, вот как сделать что бы код работал только для Image ?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
04.03.2012, 22:12
Лучший ответ Сообщение было отмечено как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void __fastcall TForm1::FormShow( TObject *Sender )
{
    BorderStyle = bsNone; // скрыть рамку окна (можно этого и не делать)
 
    int transp_val = 50;
    long ext_style = GetWindowLong( Handle, GWL_EXSTYLE );
    SetWindowLong( Handle, GWL_EXSTYLE, ext_style | WS_EX_LAYERED );
    ::SetLayeredWindowAttributes( Handle, 0, ( 255 *transp_val ) / 100, LWA_ALPHA ); // прозрачность
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::FormPaint(TObject *Sender)
{
    HRGN All, TempRgn;
    int x, y, i;
    x = ( div( Form1->Width - Form1->ClientWidth, 2 ) ).quot;
    y = Form1->Height - Form1->ClientHeight - x;
    All = CreateRectRgn( 0, 0, Form1->Width, Form1->Height );
    TempRgn = CreateRectRgn( x, y, x + Form1->ClientWidth, y + Form1->ClientHeight );
    CombineRgn( All, All, TempRgn, RGN_DIFF );
    for ( i = 0; i < Form1->ControlCount; i++ ) {
        TempRgn = CreateRectRgn( x + Form1->Controls[i]->Left,
            y + Form1->Controls[i]->Top,
            x + Form1->Controls[i]->Left + Form1->Controls[i]->Width,
            y + Form1->Controls[i]->Top + Form1->Controls[i]->Height );
        CombineRgn( All, All, TempRgn, RGN_OR );
    }
    SetWindowRgn( Form1->Handle, All, true );
}
Данный код для работы с регионами был когда-то, где-то предоставлен камрадом LK - ему и спасибо
3
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 5
08.06.2012, 22:13
Сорри может не по теме попал, но лучше не нашел... в общем проблема с прозрачностью, устанавливаю прозрачность на форму через TransparentColor все получается, НО окно с видео в WindowsMediaPlayer либо не отображает (если какой нить цвет типа сиреневого) видео либо становится прозрачным (если черный). И вся эта беда творится на XP на семерке такого не замечал, как видео в WMP не трогать прозрачностью??
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
08.06.2012, 22:24
не трогать прозрачность
0
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 5
08.06.2012, 23:13
В этом и проблема, на форме расположен Image1 у которого замещаются цвета что бы было нестандартной формы окно, но вместе с этим и окно плеера, как его не трогать, если он расположен на этой же форме и его окно тоже становится дырявым.
получается либо так [крепите картинки на форум]
либо вот так [крепите картинки на форум]
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
09.06.2012, 00:06
Вот картинки (шотоясегоднядобрый).
Миниатюры
Прозрачность только для Image, а не для всей формы   Прозрачность только для Image, а не для всей формы  
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
09.06.2012, 00:21
1. Заливать картинкой не Image, а канву формы.
2. Расположить окно плеера на панели, залитой черным цветом.
0
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 5
09.06.2012, 02:30
Цитата Сообщение от LK Посмотреть сообщение
1. Заливать картинкой не Image, а канву формы.
Залил, исключил неугодный цвет, тут все отлично, а дальше та же проблема, TrancparentColor=true на форме - видео нет, но сквозь канву не просвечивает форма, а TrancparentColor=false видео есть но цвет формы (зеленый) отображается и канва на зеленом прямоугольнике. Пробовал и MediaPlayer и WidowsMediaPlayer, размещал на панелях, заливал черным.. ни чего не помогло. и ведь только с XP такая проблема, на семерке все отлично даже через Image если картинку заливать...( В общем я так понимаю как бы я не крутился, если TrancparentColor=true, я не получу в XP видео в видеоокне если расположу на той же форме WindowsMediaPlayer?(
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
09.06.2012, 13:38
Обрезай форму не цветом, а регионами. Тут почитай, еще поищи на форуме, есть это все.
Смотри в сторону CreateEllipticRgn(), CreateRoundRectRgn(), CombineRgn(), ну, и в том же духе...
1
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 5
09.06.2012, 19:47
Цитата Сообщение от BRcr Посмотреть сообщение
Смотри в сторону CreateEllipticRgn(), CreateRoundRectRgn(), CombineRgn(), ну, и в том же духе...
только это и остается, придется попроще интерфейс накорябать...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.06.2012, 19:47
Помогаю со студенческими работами здесь

Библиотека или компонент для работы с картинками и видео(Типа Image) только в Qt
Подскажите плиз компонент для работы с картинками и видео(Типа Image) Или библиотеку кроссплатформенную.

Создать массив переменной емкости, который был бы доступен из всей формы, а не только в одной функции
Требуется создать массив переменной емкости который был бы доступен из всей формы, а не только в одной функции. Умею создавать массивы...

Как в Visual Studio отменить действие не для конкретной страницы, а для всей программы?
Как в visual studio отменить действие не для конкретной страницы, а для всей программы?

Прозрачность формы, при наведении мыши на кнопку реализовать изменение её положения относительно формы с невозможностью выхода за границы формы
доброй ночи, уважаемые программисты, студенты,а также любители программировать. помогите, пожалуйста, написать программу на языке С++ ...

Thread.Sleep только для одной формы
Здравствуйте столкнулся с такой штукой, есть form1 на ней кнопка, в которой создается и открывается form2, на form2 кнопка которая делает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru