Пятница, 19 Апреля 2024, 22:47

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Прозрачная форма
Прозрачная форма
masb8ly-GCДата: Пятница, 23 Ноября 2012, 21:47 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Здравствйте! На Delphi небходимо было сделать прозрачную форму и вместо формы использовать изображение. Нарисовав векторное изображения и растрировав его, я вставил его на форму, сделал перемещение по нажатию на него, в параметрах формы указал noborder и прозрачность по белому цвету. Но по скольку обьект векторный и имеет изогнутые линии, то существуют полупрозрачные пиксели, которые перекрывают белый цвет и соответственно в этом месте фон формы не убирается. Выглядит это очень не красиво. Как можно полностью убрать белый цвет?

P.S. На Windows такой же результат, если нужно могу выложить скрин и с окошек.

Добавлено (23.11.2012, 21:47)
---------------------------------------------
UP!
Неужели никто не сталкивался и не знает?


Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders
Chief Technology Officer RoyalePlay Games


Сообщение отредактировал masb8ly-GC - Понедельник, 19 Ноября 2012, 00:46
DimOkДата: Четверг, 29 Ноября 2012, 19:54 | Сообщение # 2
ONG studio
Сейчас нет на сайте
вау, красивый скрин biggrin

Активно пользуюсь Godot Engine
TimKruzДата: Четверг, 29 Ноября 2012, 23:32 | Сообщение # 3
старожил
Сейчас нет на сайте
Полупрозрачные пиксели не из-за перехода из вектора в растр, а из-за сглаживания во время этого перехода. Нужно было сначала сглаживание выключить...
Просто удали эти лишние пиксели в растровом редакторе и всё...
Quote (DimOk)
вау, красивый скрин

Создание собственных форм и скинов окон круто и красиво, но в конечном итоге может получиться лишняя и неудобная фигня... Главное - стремиться к удобству использования программы, а красота на второй план отходит...


firedayДата: Пятница, 30 Ноября 2012, 01:16 | Сообщение # 4
частый гость
Сейчас нет на сайте
Я делал выцветание на vb6 вот так:
Code
Private Sub Form_Initialize()
Me.Width = 400 * Screen.TwipsPerPixelX
Me.Height = 200 * Screen.TwipsPerPixelY
Me.Left = (Screen.Width - Me.Width)
Me.BackColor = RGB(1, 1, 1)
ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
ret = ret Or WS_EX_LAYERED
SetWindowLong Me.hWnd, GWL_EXSTYLE, ret
SetLayeredWindowAttributes Me.hWnd, Val(RGB(1, 1, 1)), 0, LWA_COLORKEY
End Sub

Code
Public Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function SetLayeredWindowAttributes Lib "User32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

Code
Public Const LWA_COLORKEY = &H1
Public Const GWL_EXSTYLE = (-20)
Public Const WS_EX_LAYERED = &H80000

Вроде все. Мог что-то забыть.


Сообщение отредактировал fireday - Пятница, 30 Ноября 2012, 01:17
masb8ly-GCДата: Пятница, 30 Ноября 2012, 23:45 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Quote (TimKruz)
Полупрозрачные пиксели не из-за перехода из вектора в растр, а из-за сглаживания во время этого перехода. Нужно было сначала сглаживание выключить...
Просто удали эти лишние пиксели в растровом редакторе и всё...

Так то оно так, но плавность линий потеряется очень...


Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders
Chief Technology Officer RoyalePlay Games
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Прозрачная форма
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг