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:
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:
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:
If frmNave.Point(X, Y) <> vbWhite Then
Me.Point(X2, Y2) = frmNave.Point(X, Y)
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:
[/color][/font]