стеклянная форма

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

стеклянная форма

Сообщение Invader » 26.12.2011 (Пн) 22:01

Виндовс 7, темы AERO отключены - рабочая тема, классическая.
хотелось бы реализовать прозрачность формы по маске PNG.
В каком направлении смотреть, интересует не рамка, а вся форма.
умён и жаден,
характер отсуствует

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 26.12.2011 (Пн) 22:38

Попробуй так:
Код: Выделить всё
Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  Me.TransparencyKey = Color.White
  Me.Font = New Font("Courier New", 24)
End Sub

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
  e.Graphics.DrawString("Прозрачный текст на форме", Me.Font, Brushes.White, New Point(0, 0))
End Sub

End Class

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: стеклянная форма

Сообщение Invader » 26.12.2011 (Пн) 22:49

С уважением, к ответу, НО
прозрачный текст оно конечно тож...
но я же описал идею, прямоугольник нарисованный в PNG формате в виде прямоугольника из стекла - с подсветкой краёв с бликом и тенью - как использовать в качестве графического представления формы?
умён и жаден,
характер отсуствует

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: стеклянная форма

Сообщение Invader » 26.12.2011 (Пн) 22:54

что то вроде этогоhttp://www.youtube.com/watch?v=ievfo6zve7E только не с блокнотом, а со своей формой
умён и жаден,
характер отсуствует

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: стеклянная форма

Сообщение FireFenix » 26.12.2011 (Пн) 23:20

Если включить аеро
google -> ключевые слова dwm aero glass
первый линк -> http://msdn.microsoft.com/ru-ru/magazine/cc163435.aspx
Последний раз редактировалось FireFenix 26.12.2011 (Пн) 23:33, всего редактировалось 1 раз.
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 26.12.2011 (Пн) 23:26

Invader писал(а):что то вроде этогоhttp://www.youtube.com/watch?v=ievfo6zve7E только не с блокнотом, а со своей формой

Тогда так:
Код: Выделить всё
Me.Opacity = 0.7

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: стеклянная форма

Сообщение Invader » 26.12.2011 (Пн) 23:49

ну причем тут aero? я же сказал что темы и aero отключены...
вот как мне предлагали на vb6 работа c gdi+ http://bbs.vbstreets.ru/download/file.php?id=5227рабочий, но хотелось бы узнать может что то упростилось vb.net
умён и жаден,
характер отсуствует

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: стеклянная форма

Сообщение FireFenix » 27.12.2011 (Вт) 0:01

Invader писал(а):ну причем тут aero?

при том что в ролике с аеро, а жить под вин 7 без аеро извращение
а если судить по названию, то стеклянную форму можно получить только натягивая на форму текстуру стекла с альфой, что опять таки извращение, если это можно сделать через аеро

Invader писал(а):вот как мне предлагали на vb6 работа c gdi+ http://bbs.vbstreets.ru/download/file.php?id=5227рабочий, но хотелось бы узнать может что то упростилось vb.net

Тебе уже сказали, использовать Opacity или прозрачность как цвет фона

Код: Выделить всё
    Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Me.BackColor = Nothing
        Me.TransparencyKey = BackColor
        Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
    End Sub
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: стеклянная форма

Сообщение Invader » 27.12.2011 (Вт) 0:11

FireFenix писал(а):Если включить аеро
google -> ключевые слова dwm aero glass
первый линк -> http://msdn.microsoft.com/ru-ru/magazine/cc163435.aspx

много интересного, но уважаемый FireFenix, шаблонные формы с элементами AERO,меня не интересуют по причинам:
1. я планирую нарисовать сам, так как нарисую лучше мелкомягких
2. эффект прозрачного стекла с рамкой, мне же надо и на клиентскую область!
и ещё вопрос, поддерживается ли платформой vb.net работа с форматом MNG (англ. Multiple-image Network Graphics) — формат графических файлов
умён и жаден,
характер отсуствует

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: стеклянная форма

Сообщение Invader » 27.12.2011 (Вт) 0:18

FireFenix писал(а):Тебе уже сказали, использовать Opacity или прозрачность как цвет фона

Код: Выделить всё
    Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Me.BackColor = Nothing
        Me.TransparencyKey = BackColor
        Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
    End Sub

ну какой Opacity - полупрозрачная серенькая форма?!
Или BackColor представьте стекло с каплями росы, с прозрачными кнопками свернуть, развернуть, закрыть с интерактивной подсветкой!
и может это окно будет в виде шестигранника (ну это отдельная история)
и что делать, если система будет ХР
умён и жаден,
характер отсуствует

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 27.12.2011 (Вт) 0:31

Рыть сюда:
Код: Выделить всё
Public Class Form1

Public Sub New()
  SetStyle(ControlStyles.SupportsTransparentBackColor, True)
  'SetStyle(ControlStyles.UserPaint, True)
  SetStyle(ControlStyles.Opaque, True)
  InitializeComponent()
End Sub

Protected Overrides ReadOnly Property CreateParams As System.Windows.Forms.CreateParams
  Get
    Dim Result As CreateParams = MyBase.CreateParams
    Const WS_EX_TRANSPARENT As Integer = &H20
    Result.ExStyle = Result.ExStyle Or WS_EX_TRANSPARENT
    Return Result
  End Get
End Property

Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  If Me.BackgroundImage IsNot Nothing Then e.Graphics.DrawImage(Me.BackgroundImage, 0, 0)
  MyBase.OnPaint(e)
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  'Me.TopMost = True
  Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
  Me.BackgroundImage = Bitmap.FromFile(My.Application.Info.DirectoryPath & "\mspaint.png")
End Sub

End Class
Но тут куча побочных эффектов :(
Последний раз редактировалось Qwertiy 27.12.2011 (Вт) 0:55, всего редактировалось 1 раз.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 27.12.2011 (Вт) 0:36

Invader писал(а):ну какой Opacity - полупрозрачная серенькая форма?!

А одновременно использовать Opacity и BackgroundImage слабо?

Invader писал(а):и может это окно будет в виде шестигранника (ну это отдельная история)

А вот совместить Opacity и TransparencyKey не получится :(

FireFenix писал(а):Me.BackColor = Nothing

Эта команда игнорируется :D

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: стеклянная форма

Сообщение Invader » 27.12.2011 (Вт) 12:12

Qwertiy писал(а): Qwertiy » 26.12.2011 (Пн) 23:31

да я это искал, вопрос почему не маштабируется изображение по форме, или как это можно включить.
И главный вопрос в данном примере, при сворачивании visual studio, исчезает и запущенная форма, и развернуть её уже нет возможности! не ужели альфа канал строится из того что под формой и при сворачивании она подобно штампу, исчезает со свёрнутым?
умён и жаден,
характер отсуствует

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: стеклянная форма

Сообщение Joo » 27.12.2011 (Вт) 14:22

Я думаю поможет API функция UpdateLayeredWindow, примеров использования в интернете полно, на VB6 у вас уже есть. Но, я думаю вам нужно бросить эту затею, так-как, учитывая ваши предыдущие вопросы, когда у вас дойдет дело до размещения, а главным образом отображения, компонентов на форме, до изменения размеров формы вам просто не хватит знаний все это реализовать.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 27.12.2011 (Вт) 14:25

Invader писал(а):вопрос почему не маштабируется изображение по форме, или как это можно включить.

Изображение не масштабируется, т. к. оно не масштабируется при рисовании:
Код: Выделить всё
e.Graphics.DrawImage(Me.BackgroundImage, 0, 0)
При желаннии очень легко поменять.

Invader писал(а):И главный вопрос в данном примере ...

А это из-за того, что такое изменение CreateParams говорит Windows'у, что ты сам отвечаешь за перерисовку формы, а не Windows. Так что, как напишешь, так и получится.

Там ещё куча "замечательных" эффектов проявляется, типа нестёртых кусков формы поверх другого приложения. А если использовать Поверх всех окон, то вообще не перерисовывается.

Ещё, при щелчке по прозрачному, он обрабатывается формой, а в твоём примере, да и при использовании TransparencyKey, насколько я помню, этого не происходит, щелчок получает то приложение, окно которого видимо в этом месте.

Я понимаю, что это можно как-то исправить, но у меня не получается.

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: стеклянная форма

Сообщение Invader » 27.12.2011 (Вт) 14:56

всем спасибо, буду думать - есть над чем!
в идее всё делается для моей персональной сд- визитки, предполагаются только мои окна, так как главное окно(первое) будет занимать весь экран может надо будет взглянуть в сторону directdraw
умён и жаден,
характер отсуствует

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: стеклянная форма

Сообщение Joo » 27.12.2011 (Вт) 17:49

Invader писал(а):в идее всё делается для моей персональной сд- визитки

Ой, тогда .NET не лучший выбор, ведь возможна попытка запуска программы на системе где нет .NET Framework
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: стеклянная форма

Сообщение Invader » 27.12.2011 (Вт) 19:36

не понял, а что нельзя отказаться от использования фраемворк в использовании и при компиляции :oops:
шеф всё пропало?!
умён и жаден,
характер отсуствует

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: стеклянная форма

Сообщение FireFenix » 27.12.2011 (Вт) 20:03

Invader писал(а):не понял, а что нельзя отказаться от использования фраемворк в использовании и при компиляции :oops:
шеф всё пропало?!

Изображение

Это очевидно из названия языка - VB.NET!
При компиляции - .NET среда генерирует MSIL-код и зашивает в бинарик.
После запуска ехе, Win загружает (если не загружено ядро CLR) и передаёт ему управления для выполнения IL-кода

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

Существуют программы, зашивающие FW внутрь ехе'шника, но лишние 50метров помимо кода это круто :D
Впрочем ничего не мешает таскать инсталл MS FW рядом, и вроде с Win XP SP3 идёт FW2.0 по дефолту
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: стеклянная форма

Сообщение Invader » 27.12.2011 (Вт) 21:30

FireFenix писал(а): и вроде с Win XP SP3 идёт FW2.0 по дефолту

вот и я уже подумал в свойствах компиляции указать фраймворк 2
умён и жаден,
характер отсуствует

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: стеклянная форма

Сообщение Invader » 28.12.2011 (Ср) 18:26

Вот вопрос, уважаемые, почему я не могу импортировать dwmapi.dll, я её и зарегить не могу - пишет мол точка входа не найдена, и это не первый случай
Внимание вопрос! что делать в таких носках - случаях!
умён и жаден,
характер отсуствует

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: стеклянная форма

Сообщение FireFenix » 28.12.2011 (Ср) 18:42

Invader писал(а):Вот вопрос, уважаемые, почему я не могу импортировать dwmapi.dll

Это ты должен у себя спросить...

Invader писал(а):я её и зарегить не могу - пишет мол точка входа не найдена, и это не первый случай

viewtopic.php?f=17&t=43644 + изучать примеры, COM и язык программирования
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: стеклянная форма

Сообщение ger_kar » 29.12.2011 (Чт) 5:49

FireFenix писал(а): Win XP SP3 идёт FW2.0 по дефолту
Не идет! И никогда не шел. Просто некоторые умельцы переделывают дистрибутивы интегрируя туда пакеты драйверов и FW в том числе (а некоторые наоборот все вырезают) и делают всякие автоустановочные сборки, сильно левые и не очень. Есть и вполне нормальные. Но лучше конечно сделать свою, на основе чистого дистрибутива, тогда ты точно будешь знать что где и как у тебя ставиться вместе с системой.
Бороться и искать, найти и перепрятать

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: стеклянная форма

Сообщение FireFenix » 29.12.2011 (Чт) 10:54

ger_kar писал(а):
FireFenix писал(а): Win XP SP3 идёт FW2.0 по дефолту
Не идет! И никогда не шел. Просто некоторые умельцы переделывают дистрибутивы интегрируя туда пакеты драйверов и FW в том числе (а некоторые наоборот все вырезают) и делают всякие автоустановочные сборки, сильно левые и не очень. Есть и вполне нормальные. Но лучше конечно сделать свою, на основе чистого дистрибутива, тогда ты точно будешь знать что где и как у тебя ставиться вместе с системой.

Да, точн, это моё заблуждение...
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: стеклянная форма

Сообщение Invader » 29.12.2011 (Чт) 13:57

FireFenix писал(а):
Invader писал(а):Вот вопрос, уважаемые, почему я не могу импортировать dwmapi.dll

Это ты должен у себя спросить...

спрашивал, но в ответ тишина.
FireFenix писал(а):
Invader писал(а):я её и зарегить не могу - пишет мол точка входа не найдена, и это не первый случай

viewtopic.php?f=17&t=43644 + изучать примеры, COM и язык программирования


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

по предложеной Вами ссылке:
Хакер писал(а):
http://rsdn.ru/article/com/introcom.xml#ECFAE — очень кратко (самое необходимое).

я уже сталкивался с проблемой: некая библиотека и OCX не хотели регистрироваться - когда я их скопировал в директорию со своей программой, но в том же месте куда я их перенёс, они чудесным образом прорегились , после того когда я к ним подтянул другие, поставляемые вместе дээлки. В результате использовав одну ДЛЛ, пришлось сетапить 13 шт.
Очевидна связь неких длл с группой. Здесь я описал проблему библиотеки TTS из пакета SDK фирмы Loguendo.
Тем не менее из прочтенного, преложенного уважаемым Хакер'ом, мне неясна проблема с регистрацией dwmapi.dll
умён и жаден,
характер отсуствует

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: стеклянная форма

Сообщение iGrok » 29.12.2011 (Чт) 19:23

Invader писал(а):я её и зарегить не могу

А с какого перепуга ты должен мочь зарегить не-ActiveX dll? Это библиотека с экспортируемыми функциями. А вот почему ты оттуда ничего импортировать не можешь - это к тебе вопрос. Как пытаешься импортировать?
label:
cli
jmp label

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: стеклянная форма

Сообщение Invader » 30.12.2011 (Пт) 22:34

ладно, всё равно не втом направлении,всё равно (AERO) - ничто....
кто вообще придумал термин? Мелкомягкие взглянули на реально красивые менюшки разработчиков, ещё с милениума и только в висте начали, двигать копии чужих идей (надеюсь разработчики сорвали "КУШ"!)
ложил я на корпоративы (МЕЛКОМЯГКИХ) - у них дизайнеров ноль!!!
тем не менее в ХР часто встречал интерактивные окошки, сторонних. При перетаскивание и деформации они были шустры и без артефактов, но не на АСЕМБЛЕРЕ, их же писали !
умён и жаден,
характер отсуствует

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: стеклянная форма

Сообщение FireFenix » 30.12.2011 (Пт) 23:44

Invader писал(а):ладно, всё равно не втом направлении,всё равно (AERO) - ничто....
кто вообще придумал термин? Мелкомягкие взглянули на реально красивые менюшки разработчиков, ещё с милениума и только в висте начали, двигать копии чужих идей (надеюсь разработчики сорвали "КУШ"!)
ложил я на корпоративы (МЕЛКОМЯГКИХ) - у них дизайнеров ноль!!!
тем не менее в ХР часто встречал интерактивные окошки, сторонних. При перетаскивание и деформации они были шустры и без артефактов, но не на АСЕМБЛЕРЕ, их же писали !

ИзображениеИзображениеИзображение

Aero это не дизайн, а технология...
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: стеклянная форма

Сообщение iGrok » 31.12.2011 (Сб) 1:31

Invader писал(а):При перетаскивание и деформации они были шустры и без артефактов, но не на АСЕМБЛЕРЕ, их же писали !

Ммм.. И в чём проблема? При чём тут ассемблер, вообще?
Двойная буферизация, установка региона для окна и корректная обработка всех нужных оконных сообщений -> PROFIT!!!
С "полупрозрачностью" по маске (типа стекла "с дефектами", или блуром, как у аэро) ууже немножечко сложнее, конечно. Тут уже мозг придётся подключать. Но в остальном принципы - те же.
label:
cli
jmp label


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 30

    TopList