Autor Tema: Control OptionButton Fondo Transparte  (Leído 6932 veces)

0 Usuarios y 1 Visitante están viendo este tema.

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Control OptionButton Fondo Transparte
« en: Julio 18, 2011, 09:28:28 pm »
Hola amigos del foro, alguien sabe como puedo poner al control OptionButton fondo transparente.

Googleando encontré este pero no me sirve así:

http://www.vbforums.com/showthread.php?t=557108
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:Control OptionButton Fondo Transparte
« Respuesta #1 en: Julio 18, 2011, 10:19:41 pm »
jajaja el post en planet source code es mio :P... y realmente no sirve si el ClearType esta activado, porque se caga fiero
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Control OptionButton Fondo Transparte
« Respuesta #2 en: Julio 18, 2011, 10:51:00 pm »
 :'( Hay alguna forma de solucionar eso.
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Control OptionButton Fondo Transparte
« Respuesta #3 en: Julio 18, 2011, 11:38:46 pm »
Hola, proba esto:

Código: [Seleccionar]
Option Explicit

Private Const RGN_XOR = 3
Private Const COLOR_BTNFACE = 15

Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 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 SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long

Private Sub OptionTransparente(aCtl As Control, trans As Boolean)

    Dim X As Long
    Dim Y As Long
    Dim wid As Long
    Dim hgt As Long
   
    Dim rgnCtl As Long
    Dim rgnPixel As Long
    Dim colPixel As Long
    Dim ctlDC As Long
    Dim backColor As Long
   
    backColor = GetSysColor(COLOR_BTNFACE)
   
    wid = aCtl.Width / Screen.TwipsPerPixelX
    hgt = aCtl.Height / Screen.TwipsPerPixelY
   
    rgnCtl = CreateRectRgn(0, 0, wid, hgt)
    If Not trans Then GoTo TransChkOpt_SetRgn
    aCtl.Refresh
    ctlDC = GetDC(aCtl.hwnd)
   
    For Y = 0 To hgt
        For X = 0 To wid
   
            colPixel = GetPixel(ctlDC, X, Y)
            If colPixel = backColor Then
   
            rgnPixel = CreateRectRgn(X, Y, X + 1, Y + 1)
            CombineRgn rgnCtl, rgnCtl, rgnPixel, RGN_XOR
   
            DeleteObject rgnPixel
            End If
        Next X
    Next Y
   
    ReleaseDC aCtl.hwnd, ctlDC

TransChkOpt_SetRgn:
DeleteObject SetWindowRgn(aCtl.hwnd, rgnCtl, True)
End Sub

Private Sub Command1_Click()
    OptionTransparente Option1, True
End Sub

pone un option arriba de una imagen y apreta el boton.

saludos.

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:Control OptionButton Fondo Transparte
« Respuesta #4 en: Julio 18, 2011, 11:46:11 pm »
Hola esta parece ser la forma mas correcta mas que, una por si la funete tiene difuminación y otra porque si no haces click sobre la parte que no hay una region solida no se produce el click
ni mas ni menos que de LaVolpe
http://www.vbforums.com/showthread.php?t=636390

no analize el codigo pero me da la espina que se podria reducir un poco para solo hacerlo solo full transparente, digo esto porque me parece que tiene mas opciones, lastima que no viene un ejemplo con todas las funciones.

Saludos.

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Control OptionButton Fondo Transparte
« Respuesta #5 en: Julio 19, 2011, 12:42:09 am »
Seba el que me pasaste funciona pero cuando pierde el foco la fuente parece que se distorsiona queda todo con puntitas al salir del foco parece que se desactiva el ClearType.
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

Liudex

  • Bytes
  • *
  • Mensajes: 27
  • Reputación: +1/-0
    • Ver Perfil
Re:Control OptionButton Fondo Transparte
« Respuesta #6 en: Julio 19, 2011, 10:00:59 am »
Bueno Amigos yo creo que no es necesario usar ningun tipo de codigo para tener un OptionBotton transparente ya que ya tenemos ese control con esa funcionalidad en el mismo Vb Solo tenemos que seleccionar la opcion Microsoft Form 2.0 Objet library en los componenentes y nos aparecera el objeto que deseamos con la opcion de tranparencia.
Si Se puede Imaginar, Se Puede Programar........

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Control OptionButton Fondo Transparte
« Respuesta #7 en: Julio 19, 2011, 09:29:32 pm »
Bueno Amigos yo creo que no es necesario usar ningun tipo de codigo para tener un OptionBotton transparente ya que ya tenemos ese control con esa funcionalidad en el mismo Vb Solo tenemos que seleccionar la opcion Microsoft Form 2.0 Objet library en los componenentes y nos aparecera el objeto que deseamos con la opcion de tranparencia.

si, pero el tema es mejor no depender de ningun OCX externo.

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Control OptionButton Fondo Transparte
« Respuesta #8 en: Julio 19, 2011, 11:16:03 pm »
Bueno Amigos yo creo que no es necesario usar ningun tipo de codigo para tener un OptionBotton transparente ya que ya tenemos ese control con esa funcionalidad en el mismo Vb Solo tenemos que seleccionar la opcion Microsoft Form 2.0 Objet library en los componenentes y nos aparecera el objeto que deseamos con la opcion de tranparencia.

si, pero el tema es mejor no depender de ningun OCX externo.

Exactamente lo que quería decir me ganaste cuando mas ocx le pones a tu proyecto mas complicado se vuelve hacer el instalador por eso no usaba ya ese control.
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Control OptionButton Fondo Transparte
« Respuesta #9 en: Julio 19, 2011, 11:25:58 pm »

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Control OptionButton Fondo Transparte
« Respuesta #10 en: Julio 20, 2011, 11:27:32 am »
probaste esto ?

MultiTransparent Control

Va a servir este seba, solo que cuando se pone sobre algo mas negro ya se nota algunas puntitas. pero para mi proyecto ya da.
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo