Perdon por hacer Flood xD
La cuestion sigo como al principio ya que tras usar este codigo con los modulos que parecia pintar geial me he dado cuenta de 1 cosa...
Carga el Png hasta aqui bien.
Carga la tranparencia del png hasta aqui tb bien no?
Pero el picturebox tiene un fondo por lo cual sigo teniendo un maldito fondo >_< puedo ponerle el color que quiera que se vera bien ya que la transparencia del png esta bien cargada.
Ahora bien trato de quitar el color de fondo del picture1 y cuando lo hago el color de fondo del picture1 osea "la macro, el cuadro" desaparece ^o^ Pero entonces no se que coño pasa que aparecen pegote negros en el PNG
De manera que al quitar la transparencia a la caja Picture1 no se xk la transparencia del PNG enpieza air mal y no se transparenta todo y se crea una linea negro y muchos manchones alrededor de la imagen ToT
Tienen idea de xk? Le pongo todo mi codigo (es corto) x si quereis analizarlo lo digo... Xk no encuentro el fallo :S
Const LWA_COLORKEY = &H1
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED = &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.dll" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Dim pngClass As New LoadPNG
Private Sub Form_Load()
Shape Me, &H0& 'Quita el color de Fondo del Form
CallByName Me, "Character", VbMethod ' Mostramos el PNG
End Sub
Private Sub Shape(Frm As Form, Color As Long)
Frm.BackColor = Color
Dim Ret As Long
Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
Ret = Ret Or WS_EX_LAYERED
SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret
SetLayeredWindowAttributes Me.hWnd, Color, 0, LWA_COLORKEY
End Sub
Function Character()
On Error Resume Next
' cuando uso la linea "Picture1.backcolor = Transparent" enpieza a ir mal :S
' Tb he notado que si cambio el color manualmente del Picture 1 a Negro sucede lo mismo.
'Picture1.BackColor = Transparent
Picture1.Picture = LoadPicture("")
pngClass.PicBox = Picture1
pngClass.SetToBkgrnd False, 0, 0 'set to Background (True or false), x and y
pngClass.BackgroundPicture = Picture1 'same Backgroundpicture
pngClass.SetAlpha = True 'when Alpha then alpha
pngClass.SetTrans = True 'when transparent Color then transparent Color
pngClass.OpenPNG ("LuckyStar - Mikolu.png")
End Function
Aclaraciones:
El Form solo tiene un PictureBox llamado "Picture1".
Uso dos librerias (Un Module y un ClassModule) que pertenecen al ejemplo que puse antes de RecursosVisualBasic
La imagen se llama "LuckyStar - Mikolu.png"
¿Puede ser posible que el problema este en el "Picture1.BackColor = Transparent" y que el transparent no transparente sino que lo vuelva negro (black) ya que si fuera esto tendria algo de sentido ya que el "private sub SHAPE" que uso para dar transparencia al form trata de transparentar fondos negros (¿?WTF¿?)
Saben algunamanera de dar transparencia al Picture1 que no sea la que haya usado yo?