Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: YAcosta en Marzo 23, 2011, 03:13:31 pm

Título: Afinando el ucImage
Publicado por: YAcosta en Marzo 23, 2011, 03:13:31 pm
Hola. Tengo un pequeño exceso de sal en mis tallarines jeje, osea, el control va muy bien pero hay unos detallitos que quiza se pueda afinar y quiza lo podria hacer yo pero aun no veo como, y son:
1.- Tengo unos 5 controles ucImage y cuando ejecuto la aplicación y visualizo el form, los ucImage hacen una especie de "pestañeo", es decir, aparecen blancos los controles ucImage y luego se corrigen, estamos hablando de menos de 1 segundo, es solo un asunto de estética ya que se ve feo ese pestañeo o parpadeo. Por el momento lo he resuelto tapando todos los controles con un Picture y con un control Timer espero 1 segundo y quito el Picture e inactivo el timer, de esa forma "no se ve" el parpadeo y ya es mas estético, pero quizá halla otra forma de mejorar esto.

2.- En todos los controles ucImage manejo el Alpha, empieza el control con 50% de transparencia, meto el mouse y lo llevo a 100% tenuemente con esto codigo: (En el MouseEnter)
Código: (vb) [Seleccionar]
    Dim i As Integer
    For i = 50 To 100 Step 10
        If ucIm.IsMouseInArea = False Then Exit For
        ucIm.Alpha = i
        DoEvents
        Sleep 40
    Next
y en el MouseExit
    Dim i As Integer
    For i = 100 To 50 Step -10
        If ucIm.IsMouseInArea Then Exit For
        ucIm.Alpha = i
        DoEvents
        Sleep 40
    Next
y esto simulando Disolvencia. El asunto es que cuando paso el mouse "mas o menos" rapido por todos los controles ucImage, algunos de ellos se retarda un poco y se vuelven a encender y a disolver nuevamente. Lo bueno es que si completan su ciclo pero algunos repiten la operacion de disolver.

Son temas esteticos que por ultimo puedo vivir con ellos y ver que floro meterle al cliente cuando alguno me señale estos detallitos.

Un abrazo.
Título: Re:Afinando el ucImage
Publicado por: coco en Marzo 23, 2011, 03:17:20 pm
Para lo del mouse enter y leave, No lo hagas con el codigo en el evento. Para empezar, hace una funcion interna en el uc que cree un timer API con un delay importante (400, 500, etc) y asi no trabas el thread (con sleep estas trabando el thread, por eso decis que se "retarda"). En el evento del timer, haces lo mismo que ahi, teniendo en cuenta que en el mousehover puede tener un valor de inicio distinto a 50, y tenes que usar dicho valor para no ver los "saltos" y que quede bien prolijo.

Esto viene de que sacaste el mouse, y el "efecto" aun no termino, por ende la transparencia <> 50.

Título: Re:Afinando el ucImage
Publicado por: YAcosta en Marzo 24, 2011, 12:45:46 am
Es un maestro, la primera leida no entendi nada jajaja, ya lei por tercera vez y voy asimilando pero aun dudo de mi capacidad para hacer lo que indicas, sin embargo "echando a perder se aprende" asi que intentare lo que mas o menos entendi jeje. Gracias!!!
Título: Re:Afinando el ucImage
Publicado por: YAcosta en Marzo 27, 2011, 02:08:01 am
Para no abrir otro hilo, ya q es del mismo control.
Como podría pasar la imagen que tengo en otro control a un control ucImagen en tiempo de ejecucion?
Algo similar a hacer
Image1.Picture = Image2.Picture

Pero con el control ucImagen como seria?

La razón es que daré al cliente a escoger entre 3 opciones y las 3 tienen el logo de una empresa diferente, digamos (Claro, Movistar y Nextel). Cuando le haga clic en un cuarto control quiero que cargue lo que el selecciono.

Gracias

Ojo, no quisiera cargarlo desde el disco, porque ya los tendre en memoria ya que son solo 3 y no pesan nada. En una tabla grabare solo 1, 2 o 3 y eso lo usare como index.
Título: Re:Afinando el ucImage
Publicado por: Lolabyte en Marzo 27, 2011, 04:17:56 am
Prueba esto

Código: [Seleccionar]
dim bvData() as byte

bvData = ucImage1.GetStream
ucImage2.LoadImageFromStream bvData
Título: Re:Afinando el ucImage
Publicado por: YAcosta en Marzo 27, 2011, 06:11:47 pm
Excelente LolaByte, muchas gracias, si funciono perfectamente.

Saludos
Título: Re:Afinando el ucImage
Publicado por: YAcosta en Marzo 27, 2011, 08:07:28 pm
Otra preguntita, intente hacerlo solo pero no le doy al valor.
En el control ucImage tengo cargada una foto. Quiero (en tiempo de ejecución) que ese control quede sin imagen. Por el momento lo resuelvo poniendo el control en .Visible = False pero era por curiosidad para saber.

Gracias