Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: как нарисовать в окне полупрозрачный прямоугольник с заливко  (Прочитано 13720 раз)
0 Пользователей и 5 Гостей смотрят эту тему.
lapulya
Молодой специалист

ru
Offline Offline

« : 15-10-2004 09:44 » 

Как нарисавать в окне (Win2000) полупрозрачный прямоугольник с заливкой. т.е. чтобы он был цветной, желательно даже с каймой, но непременно полупрозрачный. предлагать рисование отдельного дочернего полупрозрачного окна не нужно (и не спортивно это)
Записан

С уважением Lapulya
GlukSoft
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 15-10-2004 10:27 » 

lapulya, могу предложить два способа.
1 - ручной, т.е. считываешь из окна данные поточечно и с учетом того, что нужно нарисовать поверх, меняешь цвет точек, так можно реализовать любые эффекты. Желательно сначала создать совместимый bitmap и все операции по рисованию и наложению проводить в нем (работать с памятью быстрее и удобнее, чем с экраном), а потом перенести bitmap на экран.
2 - автоматический, воспользуйся OpenGL или DirectDraw.
Записан

Fatal error C1: Brain expected
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #2 : 15-10-2004 11:05 » 

GlukSoft, плохо я объяснил чего мне надо...
Мне надо стандартными средствами типа WIN API (если такое вообще возможно), сделать то что я сформулировал ранее, поэтому графические библиотеки аля DirectX не подхотят (возни слишком много), ну а перебор всех точек и анализ их цвета мммммм яяяяявный перебор (прошу прощения за каламбур  :oops: ) как мне кажется.... так что ежели ничего не придумаю, то буду юзать просто лишнего child'а который и будет полупрозрачный  Ага
Записан

С уважением Lapulya
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 15-10-2004 11:41 » 

lapulya, попробуй AlphaBlend.  Может получится.  

Заранее предупреждаю -- никогда не пользовался.  Просто постановка задачи наводит на мысль о alpha каналах.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
kokik
Гость
« Ответ #4 : 31-12-2004 08:29 » 

Не совсем понятно что нужно сделать.

В WinIP есть функция делающая прозрачным(полупрозрачным) окно или определенный цвет окна.Поддерживается в Win2000 и выше.

Делаю ето так:

//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const long WS_EX_LAYERED=0x80000;
const long LWA_ALPHA=0x02;
int proz;
long (WINAPI *pfnSetLayeredWindowAttributes)(HWND,long,long,long);
HINSTANCE hLib;



hLib=LoadLibrary("user32.dll");
                         if (hLib!=NULL)
                              {
                                  pfnSetLayeredWindowAttributes=(long(WINAPI*)(HWND,long,long,long))
                                  GetProcAddress(hLib,"SetLayeredWindowAttributes");
               
                                  if (pfnSetLayeredWindowAttributes)
                                               {
                                                SetWindowLong(hdlg,GWL_EXSTYLE,GetWindowLong(hdlg,GWL_EXSTYLE) | WS_EX_LAYERED);
                                                pfnSetLayeredWindowAttributes(hdlg,0,proz,LWA_ALPHA);
                                               }
                               }
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

proz- прозрачность от 0-255

LWA_ALPHA=0x02 - прозрачное все окно

если

LWA_ALPHA=0x01 - прозрачный цвет окна RGB(255,0,0) на пример красный;
тогда запишем последнюю строчку так pfnSetLayeredWindowAttributes(hdlg,RGB(255,0,0),proz,LWA_ALPHA);

пояснение весь красный цвет на окне станет прозрачным(полупрозрачным)

Может кому помогет :?

C Новым Годом усех!!!

Записан
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #5 : 05-01-2005 04:38 » 

to kokik , специально для тех, кто в бронепоезде цитирую (из самого первого поста!!!! где описана проблема)
ты спрашиваешь
Цитата
Не совсем понятно что нужно сделать.
отвечаю, а что же нужно было
Как нарисавать в окне (Win2000) полупрозрачный прямоугольник с заливкой. т.е. чтобы он был цветной, желательно даже с каймой, но непременно полупрозрачный.....
подведем итог... нужен ПОЛУПРОЗРАЧНЫЙ ПРЯМОУГОЛЬНИК!!!
по поводу твоего предложения
Цитата
В WinIP есть функция делающая прозрачным(полупрозрачным) окно или определенный цвет окна.Поддерживается в Win2000 и выше.
смотрим что у меня написано далее.... и видим, что там описаны требования и доп информация. цитирую
.... предлагать рисование отдельного дочернего полупрозрачного окна не нужно (и не спортивно это)
итог твое предложение проблему те касается вообще.... но все равно спасибо за участие!

Спасибо всем, проблему я решил (правда давно... просто до форума никак добраться не мог) очень просто ... GDI+ РУЛЕЗЗЗ!!! рекомендую!!!
Записан

С уважением Lapulya
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines