forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   FAQ (http://forum.boolean.name/forumdisplay.php?f=15)
-   -   Прозрачные окна - это реально! (http://forum.boolean.name/showthread.php?t=16308)

Angel_Online 08.02.2012 22:20

Прозрачные окна - это реально!
 
Вложений: 1
Всем доброго времени суток! Давно хотелось сделать прозрачные окна или окна нестандартной формы в Blitz3d :) Здесь небольшой примерчик с описанием этого процесса. Описание в комментариях *.bb файла. Знающим просьба не кричать в один голос, мол изобрел трехколесный самокат. Данная тема для тех, кто (так же, как я недавно), хочет сделать, но не получается. К сожалению, нарямую всеми функциями API оперировать не удалось, пришлось использовать в данном примере либу WinBlitz3d. Но в дальнейшем я все равно разберусь в данном вопросе.
Итак. В архиве все dll & decls кидаем в папку userlibs, также на всякий случай кидаем туда же user32.dll прямиком из вашей винды (windows\system32\user32.dll). А теперь можно и запустить пример.
АХТУНГ! Делал на win7 x86! На др. версиях винды не тестил, так что возможны глюки.
В общем, кому я действительно помог, жмем кнопочку "Полезно". Думаю, мне пора "всплывать" из AnyKey`щиков :)
Ах да, забыл.. формат изображения - только BMP, цвет маски - черный (RGB 0,0,0)

ABTOMAT 09.02.2012 00:03

Ответ: Прозрачные окна - это реально!
 
Хмм, а нельзя ли не по маске, а с труЪ-прозрачностью (навроде PNG), а то уже рваные края давненько не в моде.
Вот если б ты это сделал и оформил в удобный инклуд, был бы респект!

Angel_Online 09.02.2012 00:07

Ответ: Прозрачные окна - это реально!
 
Цитата:

Сообщение от ABTOMAT (Сообщение 219033)
Хмм, а нельзя ли не по маске, а с труЪ-прозрачностью (навроде PNG), а то уже рваные края давненько не в моде.
Вот если б ты это сделал и оформил в удобный инклуд, был бы респект!

Ну.. я и сам хотел бы в png.. пока что работаю над этим.. если удастся реализовать - отпишусь в этой теме

Angel_Online 10.02.2012 23:04

Ответ: Прозрачные окна - это реально!
 
Вложений: 1
Итак, ползал я денно и ночно по лабиринтам gdi32.dll и gdiplus.dll, но ни одной "ниточки Ариадны" ни самостоятельно, ни в гуглах не нашел :)
Поэтому решил схитрить.
Мной был найден пример на Visual Basic, увы на блиц полностью синтаксис я перевести не смог.
По примеру я сделал VB-екзешник (в архиве как Splashscreen.exe)
Работает все ну очень просто: в bb файле даже есть функция :)
Через неё Splashscreen.exe запускается с параметром, идентичным названию изображения. В архиве 3 картинки, специально мной отобранные для демонстрации.
Splashscreen.exe закрывается двойным кликом по картинке!
! Косяк - большие png глючат! Это надо в коде VB исправлять. В ближайшем времени исправлю, просто накидал на скорую руку, не хотел заставлять вас долго ждать :)
Недоработки:
1. Не реализованы координаты изображения
2. Пока что можно загружать одну картинку, вторая уже будет дубликатом Splashscreen.exe
3. Не реализовано всплывание/затухание
4. Не реализована анимация (не обещаю, но возможно смогу сделать)

Достоинства:
1. Splashscreen.exe можно вызывать из любого языка программирования
2. Никаких dll и decls :)

Надеюсь, вам понравится, в дальнейшем буду улучшать сей проектик ;)

HolyDel 10.02.2012 23:24

Ответ: Прозрачные окна - это реально!
 
а можно скомпилированную версию в комплекте?

Angel_Online 10.02.2012 23:28

Ответ: Прозрачные окна - это реально!
 
Вложений: 1
Конечно можно :)
Хоть отпишитесь кто-нить, стоит ли мне продолжать в данном направлении? А то поди зря стараюсь!

HolyDel 11.02.2012 11:53

Ответ: Прозрачные окна - это реально!
 
хм. а вот это уже очень интересно. сам интересовался способами вывода окошка с полупрозрачной альфой по опасити. Но чо то так и не добил :) Не поделишься технологией?

Angel_Online 11.02.2012 12:07

Ответ: Прозрачные окна - это реально!
 
Ну... как я писал, полностью блицем мне это реализовать не удалось, пришлось подключать Visual Basic. Просто gdi32.dll и gdiplus.dll используют структуры (например, BITMAPINFOHEADER,RGBQUAD,POINTAPI и т.д.), которые через Blitz я ну никак не мог выразить. видел примеры и на Си и на Дельфи, но VB мне как-то поближе. Нашел пример на VB, сделал по нему, добавил поддержку скана коммандной строки (то есть, чтобы Splashscreen.exe понимал с какими параметрами его запускают). Пока сделал лишь один параметр, содержащий имя PNG файла. Как планирую развивать проект в дальнейшем, написано выше. Добавлю поддержку нескольких png одновременно, параметры координат PNG, время затухания/всплывания/задержки, возможно даже получится сделать анимацию на основе стрипов или файлокадров. Вот :)
В финале получится что-то типа безDLL-ной freeлибы... :) Вариант шаровары я отверг, ибо пока понесу пользу людям самоотверженно :)
Есть только одна корысть во всем этом - охота выползти из AnyKey`щиков. Охота получить какое-то определенное место на этом форуме. Разумеется, одним, даже полностью готовым проектом я далеко не обойдусь, поэтому приложу старание и усердие. ;)

Angel_Online 18.02.2012 17:02

Ответ: Прозрачные окна - это реально!
 
Вложений: 1
Итак...
Я был вынужден написать dll, а то со вторым экзешником и командной строкой какое-то порно получилось :)
Вот вам версия 1.1 на ваш страшный суд :)
Синтаксис команд упрощен до необходимого минимума.
Реализовано:
1. Поддержка png-окна Блицем (больше никаких левых екзешников!)
2. Реализованы координаты изображений (пока что лишь начальные, Moving сделаю позже)
3. Да, вы не ослышались, изображений. Поддержка нескольких изображений! :compl:
4. Возможно менять общий уровень прозрачности окна (т.е. всплывание/затухание либо полупрозрачное окно), при этом маска сохраняется

пока что все, выкладываю новую версию моего скромного творчества, побалуйтесь :)
dll и decls в комплекте. Думаю, не нужно обьяснять, что с ними делать.
Скомпиленная версия тоже в комплекте :)
В комментариях присутствует расшифровка синтаксиса.
ах, да, длл и decls, использумые в моей 1й версии (которая еще с BMP была) вам не нужны! :)

В следующих версиях попытаюсь расширить функционал сей либы, с анимацией пока напряги, возможно попробую другие возможности :)

Просьба отписаться, понравилось ли вам, и нет ли багов на WinXp и Win7 x64!

4yBa4Ok 19.02.2012 10:58

Ответ: Прозрачные окна - это реально!
 
Win7 x86 Все ок пашет, понравились игральные кости :)

Angel_Online 19.02.2012 13:34

Ответ: Прозрачные окна - это реально!
 
Ну на Win7 x86 я делал, так что меня больше интересует WinXp 32/64 Bit и Win7 x64.

Вчера сделал Moving и Scaling(пропорциональный и непропорциональный), но Scaling кривой, увеличение получилось относительное и увеличивается не относительно центра. Возможно придется реконструировать либу либо усложнять синтаксис. Одно уже точно могу сказать - придется добавлять команды возврата значений высоты и ширины (черновое название PngWidth и PngHeight). С другой стороны, постараюсь упростить код посредством функций в самом Blitz3d.

Возможно, в следующей версии будет несколько примеров, но компилить буду только один, уж больно быстро тратится место, зарезервированное форумом для моих вложений, файлообменники не все вечны, а на всякие депозиты/летитбиты я принципиально ничего не заливаю :)

Кстати, кто не знает, как убрать черное окошко при запуске (оно хоть на секунду но мелькает как ни прятать его). Есть патч. Вчера случайно нашел в нете (Убираем в Blitz3D чёрное окно) Помогает :)

p.s. Кстати, картинки не мои :) Просто нашёл в нете наиболее наглядные :)

HolyDel 19.02.2012 13:42

Ответ: Прозрачные окна - это реально!
 
Win7 64. работает.

burovalex 11.04.2012 12:41

Ответ: Прозрачные окна - это реально!
 
Красавчик!! Респект тебе! )
А чтоб из Any'кейщика вылезти, над просто немоного побольше писать сообщений ;)

SBJoker 11.04.2012 13:58

Ответ: Прозрачные окна - это реально!
 
Однако стоит напомнить что слишком усердное набивание сообщений (особенно без смысла) может караться бананом на различные сроки. А так же флуд может быть удален (и счётчик уменьшится), а для особенно яростных набивателей статуса можно зафиксировать статус навечно.


Часовой пояс GMT +4, время: 10:23.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot