Autor Tema: Como establecer un color como transparente en VB6  (Leído 5176 veces)

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

Desconectado Kill bits

  • PIC10
  • *
  • Mensajes: 5
Como establecer un color como transparente en VB6
« en: 01 de Enero de 2016, 23:46:47 »
Hola, tengo una pequeña duda, estoy trabajando con Visual Basic 6, y empalmo imágenes, una grande como fondo, y una pequeña. Mi objetivo es que la imagen pequeña pueda cambiar de posición sobre la grande y hasta este punto, todo me ha salido bien.

Para esto utilizo el mismo formulario para dibujar las imágenes, con la propiedad picture agrego el fondo, de la siguiente forma:

Código: Visual Basic
  1. form1.Picture = LoadPicture(App.Path & "\BMP\Fondo.BMP")

Para agregar la imagen pequeña y darle el efecto de desplazamiento, utilizo la propiedad paintpicture, donde le doy las coordenadas X y Y según a donde se quiera mover la imagen pequeña, de esta manera:

Código: Visual Basic
  1. form1..PaintPicture LoadPicture(App.Path & "\BMP\Objeto.BMP"), X, Y

De esta manera, si por ejemplo el fondo es una imagen del espacio, y la imagen pequeña es una nave, al presionar las teclas, establezco una variable a true, por ejemplo, al presionar una tecla, con keydown veo el numero de la tecla, y si corresponde a "la de arriba", una variable llamada Arriba, igualo a "True", entonces con un timer, mientras la variable sea "true" suma a Y un numero para que parezca que la nave, se va moviendo.

El primer problema es la "estela" que deja el dibujo pequeño al desplazarse.
Aunque eso lo planeo arreglar pintando el cuadro del fondo que fue reemplazado antes de dibujar nuevamente la nave, pero lo que no he conseguido arreglar es que la imagen pequeña se agrega como mosaico, es decir, el color blanco alrededor de la imagen no debería de dibujarse.

He intentado cargando la imagen en otro formulario y pasarla dibujando punto por punto omitiendo el color blanco, de la siguiente forma:

Código: Visual Basic
  1. If frmNave.Point(X, Y) <> vbWhite Then
  2.      Me.Point(X2, Y2) = frmNave.Point(X, Y)
  3. End If

Lo cual funciona, pero ocupa muchos recursos, debido a que la imagen se está redibujando cada 33ms, y no mejora cambiándolo a cada 1000ms, y no es muy funcional, ya que pretendo cargar muchas imágenes de este tipo en un mismo formulario.

En resumen mi pregunta es: ¿Alguna de las propiedades anteriormente comentadas puede tomar automáticamente el color blanco como transparente, o que puedo hacer al respecto?. Me gustaría que la respuesta no implicara DLLs u otras librerías externas pero si es el caso, me gustaría saber de ellas de todas formas.

PD. También he intentado con formatos distintos de imágenes, como JPG o GIF, lo que descubrí es que si agrego un ImageBox y le pongo una imagen en formato GIF creada con un programa especial, el contorno si me lo toma transparente, sin embargo si edito la imagen con paint y le pongo el fondo blanco como transparente, el imageBox me muestra el fondo blanco de todas formas. ¿Abra forma de cargar las imágenes GIF en un formulario de la misma forma que en un ImageBox?

Finalmente adjunto el código mencionado anteriormente, como apoyo y como referencia para futuras consultas:

* Ejemplo Nave espacial.zip
(10.71 kB - descargado 414 veces)

[/color][/font]

Desconectado PalitroqueZ

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re:Como establecer un color como transparente en VB6
« Respuesta #1 en: 02 de Enero de 2016, 15:45:35 »
Kill bits

deberías editar la imágen de la nave con un software de edición de imagenes profesional (photoshop, Gimp. etc) para que no pierda la transparencia.

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Kill bits

  • PIC10
  • *
  • Mensajes: 5
Re:Como establecer un color como transparente en VB6
« Respuesta #2 en: 04 de Enero de 2016, 22:10:07 »
 :grin: Sip, hera el editor de imagenes, ¿me podrian recomendar uno simple y de lisencia libre?  :grin:

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Como establecer un color como transparente en VB6
« Respuesta #3 en: 04 de Enero de 2016, 23:14:12 »
:grin: Sip, hera el editor de imagenes, ¿me podrian recomendar uno simple y de liCencia libre?  :grin:

GIMP ?

Desconectado CompSystems

  • PIC18
  • ****
  • Mensajes: 488
    • Home Page
Re:Como establecer un color como transparente en VB6
« Respuesta #4 en: 01 de Febrero de 2016, 23:52:01 »
Desde Colombia


 

anything