Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
Заблокирован

Альфа - наложение - полупрозрачность

16.10.2013, 13:54. Показов 6733. Ответов 50

Студворк — интернет-сервис помощи студентам
Простой способ сделать форму полу-прозрачной

1 Разместите эти строчки в модуле формы Form1
2 на форме сделайте кнопку Command1

всё форма полупрозрачная !!! Вкл/выкл прозрачности !!!
Можно изменить значение Alpha по своему усмотрению

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Const GWL_EXSTYLE = (-20)
Private Const WS_EX_LAYERED As Long = &H80000
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal l1 As Long, ByVal l2 As Long, ByVal l3 As Long) As Long
 
 
Private Sub Command1_Click()
    Const Alpha = 450
    If Command1.Caption = "Включить" Then
        Command1.Caption = "Отключить"
        SetWindowLong hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) Or WS_EX_LAYERED
        SetLayeredWindowAttributes hwnd, 0, Alpha, 2
    Else
        SetWindowLong hwnd, GWL_EXSTYLE, 0
        Command1.Caption = "Включить"
    End If
End Sub
 
Private Sub Form_Load()
    Command1.Caption = "Включить"
End Sub
Добавлено через 4 минуты
В сочетании со стилями на форме у меня выглядит как крутая комерческая прога )))
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.10.2013, 13:54
Ответы с готовыми решениями:

альфа-наложение цвета
есть массив пикселей, рисуется несколько графиков со сглаживанием (Графики рисуются последовательно). Нужно в местах пересечения пикселей...

SharpDX 2D и наложение с альфа-каналом
Привет всем! Столкнулся с проблемой. Рисую одно изображение на другом через SharpDX.Direct2D: void...

Отрезок АВ не пересекает плоскость альфа, АС перпендикулярна альфа
Отрезок АВ не пересекает плоскость альфа, АС перпендикулярна альфа, BD перпендикулярна альфа, АС = 20, BD= 30, M принадлежит АВ, АМ:МВ=2:3,...

50
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
20.10.2013, 19:24
Студворк — интернет-сервис помощи студентам
Тут на з или 4 вкладке The trick выложил пример с формой из бмп картинки с тенью
Форма и внутрение объекты?
Тут ближе к концу много интересных примеров с применением api к контролам
Где отрисовываются такие элементы как label, shape, image?
Тут тож самое.
Контрол с прозрачностью и hwnd, hdc?
1
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
20.10.2013, 19:29
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
' Простой регион
Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
 
Private Const RGN_AND = 1
Private Const RGN_COPY = 5
Private Const RGN_DIFF = 4
Private Const RGN_OR = 2
Private Const RGN_XOR = 3
 
Private Sub Form_Load()
    Dim hEx As Long, hIn As Long
    Me.ScaleMode = vbPixels
    hEx = CreateEllipticRgn(0, 0, Me.ScaleWidth, Me.ScaleHeight)   ' Создаем внешний круг
    hIn = CreateEllipticRgn(100, 100, Me.ScaleWidth - 100, Me.ScaleHeight - 100) ' Создаем внутренний круг
    CombineRgn hEx, hEx, hIn, RGN_DIFF                             ' Вырезаем из внешнего внутренний
    DeleteObject hIn
    SetWindowRgn Me.hWnd, hEx, 0
End Sub
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
' Ïðîçðà÷íîñòü ColorKey
 
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
 
Const LWA_COLORKEY = &H1
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED = &H80000
 
Private Sub Form_Load()
   Dim Style As Long
   Style = GetWindowLong(Me.hwnd, GWL_EXSTYLE) Or WS_EX_LAYERED
   SetWindowLong Me.hwnd, GWL_EXSTYLE, Style
   SetLayeredWindowAttributes Me.hwnd, vbWhite, 0, LWA_COLORKEY ' Белый цвет на форме делаем прозрачным
End Sub
Свойство Picture формы картинка с белым цветом в качестве ключа прозрачности.
2
Заблокирован
20.10.2013, 19:34  [ТС]
Ну вот...
ссылки закину в спец-закладки
а код пойду прикручивать )))
0
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
20.10.2013, 19:36
Цитата Сообщение от JoraVoenyjHaker Посмотреть сообщение
Ну вот...
ссылки закину в спец-закладки
а код пойду прикручивать )))
Их не в закладки надо а читать и разбирать
Иначе по опыту знаю они там ещё лет 10 пролежат
0
Заблокирован
20.10.2013, 20:58  [ТС]
Ок

Добавлено через 14 минут
тут действительно придётся сначало создать
главный модуль в папке VB98 со всеми вертушками
как посоветовал господин The trick
а шаблоны в любой папке с присоедененным этим самым модулем

Добавлено через 41 минуту
У меня получилось сделать форму невидимой кроме
картинки на ней
картинка .png на Image
спасибо !!!

Добавлено через 14 минут
Открываются огромные возможности
с моей бурной фаназией )))
0
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
21.10.2013, 07:54
Цитата Сообщение от JoraVoenyjHaker Посмотреть сообщение
Открываются огромные возможности
с моей бурной фаназией )))
Нравится мне Ваш искренний восторг от познания нового
Цитата Сообщение от JoraVoenyjHaker Посмотреть сообщение
У меня получилось сделать форму невидимой кроме
картинки на ней
Если бы Вы были не только писатель, а ещё и читатель, то могли бы увидеть, какие мы ёлочки к прошлому Новому году рисовали!
Тогда у Вас всё получилось бы ещё раньше
1
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
21.10.2013, 08:46
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Если бы Вы были не только писатель, а ещё и читатель, то могли бы увидеть, какие мы ёлочки к прошлому Новому году рисовали!
Тогда у Вас всё получилось бы ещё раньше
Надо к этому новому году свою нарисовать

Не по теме:


Тож чтот фантазия разгулялась :)

0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
28.09.2014, 01:35
Использовал код из поста # 42.

Почему получается, что только часть белого фона становится прозрачной?
Изображения
 
Вложения
Тип файла: zip RegionTransparent_Alex.zip (8.4 Кб, 12 просмотров)
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
28.09.2014, 02:31
А, вроде разобрался. Это из-за JPEG-оптимизации.
Надо сохранять в формат, у которого нет потерь при сжатии.

Добавлено через 52 минуты
Другая проблема:

Форма не успевает прорисоваться.

У меня сначала идут функции для установки прозрачности белого цвета картинки формы.
Затем сразу поиск файлов на диске.
Картинка появляется только после завершения поиска.
Visual Basic
1
2
    Me.Refresh
    DoEvents
не помогают. Как быть ?
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
28.09.2014, 08:41
Dragokas, надо скрыть/показать форму.
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
28.09.2014, 14:11
Во, как. Спасибо. Помог такой порядок:
Visual Basic
1
2
3
    Me.Hide
    Me.Show
    DoEvents
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.09.2014, 14:11

Какой программой можно видео с альфа каналом - превратить в гиф с альфа-каналом?
Здравствуйте. Помогите советом. Какой программой можно видео с альфа каналом (с прозрачным фоном) - превратить в гиф с альфа-каналом?

IE 6,7 и полупрозрачность
Здравствуйте. Очень интересует вопрос как на самом деле ведут себя вот эти свойства css в ИЕ 6 и 7: opacity: 0.5; filter: progid:...

Полупрозрачность формы
Уже видел похожие темы на форуме, но на них никто не дал ответа. Может на этот раз кто-то знает. Использую Rad Studio XE4 C++ Builder....

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

Полупрозрачность окон
Полазив пол часа по инету не нашел ответа на свой вопрос. У меня стоит стандартная Win7 , я хочу сделать чтобы окна (верхняя их часть) были...


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

Или воспользуйтесь поиском по форуму:
51
Ответ Создать тему
Новые блоги и статьи
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru