Форум программистов, компьютерный форум, киберфорум
DirectX
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
-4 / 0 / 1
Регистрация: 12.03.2013
Сообщений: 110

Как сделать цвет заливки "полупрозрачным"

11.05.2013, 22:36. Показов 2361. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот функция прорисовки "квадрата" , как сделать цвет заливки прозрачным?


Code
1
2
3
4
5
void DrawBox( float x, float y, float w, float h, D3DCOLOR BoxColor/*заливка*/, D3DCOLOR BorderColor, IDirect3DDevice9* pDevice )
{
    FillRGB( x, y, w, h,        BoxColor, pDevice ); // фон(заливка) 
    DrawBorder( x, y, w, h, 1,    BorderColor, pDevice ); // края 
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.05.2013, 22:36
Ответы с готовыми решениями:

Черный цвет в текстуре сделать полупрозрачным
Здравствуйте. Задача следующая. Есть черно-белая текстура. Надо сделать так, чтобы один цвет был прозрачным (черный), а белый цвет -...

Подскажите, как сделать спрайт полупрозрачным?
___

Как изменить цвет заливки по условию?
Столбец F2 назовем дата открытия Столбец G2 назовем Срок Столбец H2 назовем дата закрытия Начиная с F3 пишем =15.09.2019 Срок...

8
 Аватар для BeginerMan
51 / 50 / 14
Регистрация: 17.11.2012
Сообщений: 427
11.05.2013, 22:55
Используй D3DCOLOR_ARGB(прозрачность,красный,зелён ый,синий)
1
-4 / 0 / 1
Регистрация: 12.03.2013
Сообщений: 110
11.05.2013, 23:17  [ТС]
Цитата Сообщение от BeginerMan Посмотреть сообщение
Используй D3DCOLOR_ARGB(прозрачность,красный,зелён ый,синий)
это как должно выглядеть в коде с++????

Добавлено через 7 минут
Цитата Сообщение от ВДВ777 Посмотреть сообщение
это как должно выглядеть в коде с++????
все понял спс

Добавлено через 9 минут
Цитата Сообщение от ВДВ777 Посмотреть сообщение
это как должно выглядеть в коде с++????

Добавлено через 7 минут


все понял спс
ставлю 0 в прозрачности , все равно не прозрачная заливка. Что делать???
void DrawBox( float x, float y, float w, float h, D3DCOLOR BoxColor/*заливка*/, D3DCOLOR BorderColor, IDirect3DDevice9* pDevice )
{
FillRGB( x, y, w, h, (0, 255, 25, 100), pDevice ); // фон(заливка)
DrawBorder( x, y, w, h, 1, BorderColor, pDevice ); // края
}
0
 Аватар для BeginerMan
51 / 50 / 14
Регистрация: 17.11.2012
Сообщений: 427
12.05.2013, 08:31
Там где
FillRGB вместо просто скобочек поставь D3DCOLOR_ARGB(0,255,25,100)
Я точно не помню как прозрачность меняется , с 0 до 255 или же наоборот , эксперементируй.
Отпиши если не получится

Добавлено через 35 секунд
меня название пугает просто , FillRGB
0
-4 / 0 / 1
Регистрация: 12.03.2013
Сообщений: 110
12.05.2013, 11:58  [ТС]
Цитата Сообщение от BeginerMan Посмотреть сообщение
Там где
FillRGB вместо просто скобочек поставь D3DCOLOR_ARGB(0,255,25,100)
Я точно не помню как прозрачность меняется , с 0 до 255 или же наоборот , эксперементируй.
Отпиши если не получится

Добавлено через 35 секунд
меня название пугает просто , FillRGB

вот сама функция , может в ней нужно что-то поменять?
C++
1
2
3
4
5
6
7
8
9
10
void FillRGB( float x, float y, float w, float h, D3DCOLOR color, IDirect3DDevice9* pDevice )
{
    if( w < 0 )w = 1;
    if( h < 0 )h = 1;
    if( x < 0 )x = 1;
    if( y < 0 )y = 1;
 
    D3DRECT rec = { x, y, x + w, y + h };
    pDevice->Clear( 1, &rec, D3DCLEAR_TARGET, color, 0, 0 );
}
вот смотри что происходит дальше:
(параметры вывода)
C++
1
2
3
4
5
6
void DrawBox( float x, float y, float w, float h, D3DCOLOR BoxColor/*заливка ЕСП бокса*/, D3DCOLOR BorderColor, IDirect3DDevice9* pDevice )
{
    FillRGB( x, y, w, h,        BoxColor, pDevice ); // фон ЕСП бокса
    
    DrawBorder( x, y, w, h, 1,    BorderColor, pDevice ); // края ЕСП бокса
}


а вот сам вывод, самое интересное что(см.код):

C++
1
DrawBox (сдесь координата Х,сдесь коорд.Y, тут длина  , тут ширина ,А ВОТ ТУТ Я ПИШУ D3DCOLOR_ARGB(0, 255, 0, 0) и он берет значение только первой цифры!!!("0" - это по умолчанию черный) ,тут цвет рамки(краев) ,g_pDevice);
0
 Аватар для BeginerMan
51 / 50 / 14
Регистрация: 17.11.2012
Сообщений: 427
12.05.2013, 12:35
Извени , тогда не знаю как , посиди тут ещё , может кто подскажет.
И посмотрев и перелазив весь msdn , там нечего такого не нашёл. Везде что-то пробовали RGB только.
Или же попробуй тогда D3DCOLOR_RGBA или D3DCOLOR_GBRA там были такие примеры , но я не уверен что они сработают :/
Да и я особо не парюсь с очищиванием фона у Device. Я просто всегда ставил D3DCOLOR_XRGB. Не знаю почему у тебя D3DCOLOR_ARGB не работает.
Может быть посмотри , когда ты инициализировал directx :
C++
1
2
3
4
D3DPRESENT_PARAMETERS presParams;
ZeroMemory(&presParams,sizeof(presParams));
//..//
presParams.BackBufferFormat = D3DFMT_A8R8G8B8;//32 бита , альфу 8 бит на пиксель
В формате должен присуствовать альфа.
1
-4 / 0 / 1
Регистрация: 12.03.2013
Сообщений: 110
12.05.2013, 13:34  [ТС]
Цитата Сообщение от BeginerMan Посмотреть сообщение
Извени , тогда не знаю как , посиди тут ещё , может кто подскажет.
И посмотрев и перелазив весь msdn , там нечего такого не нашёл. Везде что-то пробовали RGB только.
Или же попробуй тогда D3DCOLOR_RGBA или D3DCOLOR_GBRA там были такие примеры , но я не уверен что они сработают :/
Да и я особо не парюсь с очищиванием фона у Device. Я просто всегда ставил D3DCOLOR_XRGB. Не знаю почему у тебя D3DCOLOR_ARGB не работает.
Может быть посмотри , когда ты инициализировал directx :
C++
1
2
3
4
D3DPRESENT_PARAMETERS presParams;
ZeroMemory(&presParams,sizeof(presParams));
//..//
presParams.BackBufferFormat = D3DFMT_A8R8G8B8;//32 бита , альфу 8 бит на пиксель
В формате должен присуствовать альфа.
вот смотри что я намутил друг:

заливку я так и оставил
C++
1
2
3
4
5
6
7
8
9
10
void FillRGB( float x, float y, float w, float h, D3DCOLOR color, IDirect3DDevice9* pDevice )
{
    if( w < 0 )w = 1;
    if( h < 0 )h = 1;
    if( x < 0 )x = 1;
    if( y < 0 )y = 1;
 
    D3DRECT rec = { x, y, x + w, y + h };
    pDevice->Clear( 1, &rec, D3DCLEAR_TARGET, color, 0, 0 );
}

вот что изменил при параметрах прорисовки

C++
1
2
3
4
5
6
void DrawBox( float x, float y, float w, float h, D3DCOLOR BoxColor/*заливка ЕСП бокса*/, D3DCOLOR BorderColor, IDirect3DDevice9* pDevice )
{
    FillRGB( x, y, w, h,      D3DCOLOR_ARGB(255, 230,100, 10), pDevice ); // фон ЕСП бокса
    
    DrawBorder( x, y, w, h, 1,    BorderColor, pDevice ); // края ЕСП бокса
}


вот что при выводе на экран, фишка знаешь в чем , он читает R G B , а прозрачность игнорит!!!

C++
1
DrawBox (512,384, 50 , 200 , D3DCOLOR_ARGB(255, 230,100, 10) читает только "230,100 и 10" а прозрачность не читает!!!,(50, 0, 180, 255) ,g_pDevice);
Добавлено через 43 минуты
Цитата Сообщение от ВДВ777 Посмотреть сообщение
вот смотри что я намутил друг:

заливку я так и оставил
C++
1
2
3
4
5
6
7
8
9
10
void FillRGB( float x, float y, float w, float h, D3DCOLOR color, IDirect3DDevice9* pDevice )
{
    if( w < 0 )w = 1;
    if( h < 0 )h = 1;
    if( x < 0 )x = 1;
    if( y < 0 )y = 1;
 
    D3DRECT rec = { x, y, x + w, y + h };
    pDevice->Clear( 1, &rec, D3DCLEAR_TARGET, color, 0, 0 );
}

вот что изменил при параметрах прорисовки

C++
1
2
3
4
5
6
void DrawBox( float x, float y, float w, float h, D3DCOLOR BoxColor/*заливка ЕСП бокса*/, D3DCOLOR BorderColor, IDirect3DDevice9* pDevice )
{
    FillRGB( x, y, w, h,      D3DCOLOR_ARGB(255, 230,100, 10), pDevice ); // фон ЕСП бокса
    
    DrawBorder( x, y, w, h, 1,    BorderColor, pDevice ); // края ЕСП бокса
}


вот что при выводе на экран, фишка знаешь в чем , он читает R G B , а прозрачность игнорит!!!

C++
1
DrawBox (512,384, 50 , 200 , D3DCOLOR_ARGB(255, 230,100, 10) читает только "230,100 и 10" а прозрачность не читает!!!,(50, 0, 180, 255) ,g_pDevice);
У меня кстати вообще нет инициализации

C++
1
2
3
4
D3DPRESENT_PARAMETERS presParams;
ZeroMemory(&presParams,sizeof(presParams));
//..//
presParams.BackBufferFormat = D3DFMT_A8R8G8B8;//32 бита , альфу 8 бит на пиксель
0
 Аватар для BeginerMan
51 / 50 / 14
Регистрация: 17.11.2012
Сообщений: 427
12.05.2013, 14:58
Ты чего О_о
у тебя откуда тогда Device то ?

Добавлено через 22 секунды
pDevice*
0
-4 / 0 / 1
Регистрация: 12.03.2013
Сообщений: 110
12.05.2013, 15:34  [ТС]
Цитата Сообщение от BeginerMan Посмотреть сообщение
Ты чего О_о
у тебя откуда тогда Device то ?

Добавлено через 22 секунды
pDevice*
я всмысле не такое строение
может из-за этого?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
typedef HRESULT ( WINAPI* oReset )( LPDIRECT3DDEVICE9 pDevice, D3DPRESENT_PARAMETERS* pPresentationParameters );
typedef HRESULT (WINAPI* oEndScene)(LPDIRECT3DDEVICE9 pDevice);
 
//Colors are A,R,G,B meaning alpha(opacity), red, green, blue
 
    
#define RED D3DCOLOR_ARGB(100, 255, 0, 0)
#define GREEN D3DCOLOR_ARGB(255, 0, 255, 0)
#define BLUE D3DCOLOR_ARGB(255, 0, 0, 255)
#define WHITE D3DCOLOR_ARGB(255, 255, 255, 255)
#define BLACK D3DCOLOR_ARGB(255, 0, 0, 0)
#define YELLOW D3DCOLOR_ARGB(255, 255, 255, 0)
#define TEAL D3DCOLOR_ARGB(255, 0, 255, 255)
#define PINK D3DCOLOR_ARGB(255, 255, 240, 0)
#define ORANGE D3DCOLOR_ARGB(255, 255, 132, 0)
#define LIME D3DCOLOR_ARGB(255, 198, 255, 0)
#define SKYBLUE D3DCOLOR_ARGB(255, 0, 180, 255)
#define MAROON D3DCOLOR_ARGB(255, 142, 30, 0)
#define LGRAY D3DCOLOR_ARGB(255, 174, 174, 174) //Light Gray
#define DGRAY D3DCOLOR_ARGB(255, 71, 65, 64) //Dark Gray
#define BROWN D3DCOLOR_ARGB(255, 77, 46, 38)
#define SHIT D3DCOLOR_ARGB(255, 74, 38, 38) //Shit and brown aint much different

вот тут вот:


C++
1
DrawBox (512,384, 50 , 200 , RED,YELLOW ,g_pDevice!!!!!!!!!!!!!!!!!!);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.05.2013, 15:34
Помогаю со студенческими работами здесь

Как сделать объект полупрозрачным?
Возможно ли сделать какой-то объект (к примеру кнопку (bth1)) полопрозрачной? Спасибо за ответ

Как сделать изображение полупрозрачным?
В каком формате надо сохранять изображение, чтобы оно было полупрозрачным? Или может это можно сделать в html или css? Перепробовал кучу...

Цвет абриса в цвет заливки автоматически при трассировке абрисом
Добрый день! При трассировке растрового изображения в CorelDraw X6 предлагается выбрать определенный стиль абриса (по умолчанию стоит...

Как сделать полупрозрачным фон слоя
Имеется сайт (не думайте что реклама, скрин прикреплю ниже), multigstore.ru , как сделать что бы белая часть (обведено красным) была...

Как сделать компонент на форме полупрозрачным
Как сделать компонент на форме полупрозрачным? Сколько не искал, нашел только, как сделать всю форму полупрозрачной. Полупрозрачная...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru