Vous êtes sur la page 1sur 22

Ejercicio N 1: Partes de la Computadora.

Abrimos el programa Visual Basic seleccionamos Nuevo proyecto y comenzamos a trabajar.

Este ejercicio muestra un truco muy sencillo pero de gran utilidad. A veces tenemos una imagen total que queremos particionar, en este caso la computadora, que nos permite subdividirla en tres partes : monitor, teclado, gabinete. Esto por cdigo sera muy complejo pero usando el control Label en su modo transparente y con el Caption vaco, o sea sin etiqueta nos permite subdividir la imagen y que sus partes respondan a el evento Click por separado, provocando una respuesta distinta. En el formulario podemos ver la Label dibujada sobre el monitor, todava opaca como viene por defecto, luego sobre el gabinete est transparente pero con el Caption , tambin por defecto en este caso : Label2. Y en el teclado donde est posicionado el cursor en cambio est transparente. De acuerdo a la parte que seleccionemos: en una cuarta Label se nos mostrar el texto correspondiente, en el caso del formulario : "Teclado". En este ejercicio tenemos una Image, con su Propiedad Stretch a True, lo que nos permite agrandar un icono al tamao deseado. Y cuatro Labels, tres transparentes para subdividir la Image y una opaca para mostrar la parte seleccionada, y un Botn de Salida. El Cdigo de este ejercicio es el siguiente: Private Sub Command1_Click() End ' Cierre de la aplicacin End Sub Private Sub Label2_Click() 'El evento Click modifica el titulo de 'label1 Label1.caption = "Monitor" End Sub Private Sub Label3_Click() Label1.caption = "Gabinete" End Sub

Private Sub Label4_Click() Label1.caption = "Teclado" End Sub

Ejercicio N 2: Crucigrama.
Comenzamos un nuevo proyecto. Con este ejercicio queremos sugerir una ejemplo de crucigrama que cada uno podr adaptar a los contenidos requeridos. Tambin a partir de aqu podramos elaborar un Ahorcado. El crucigrama est armado con cuadros de texto o sea controles Text, encerrados dentro de un control frame, este control tiene la nica finalidad de agrupar y contener otros controles, ordenando la interactividad de una manera visual. Otros dos controles Frame agrupan las opciones vertical y horizontal. Conteniendo controles CheckBox que al ser seleccionados hacen la correccin de las letras ingresadas en las cajas de texto. El ingreso de las mismas se hace en tiempo de ejecucin a travs del teclado. A la derecha vemos unos controles Picture vacos que se cargaran con imgenes que muestren por ejemplo una cara sonriente si la palabra es correcta o seria si no lo es, o cualquier otro tipo de imagen .Podemos llamar a esta imagen con la funcin LoadPicture desde cualquier parte de nuestro disco rgido. Y un botn con el icono de Hijitus indica la Salida y cierre del programa. Ac tendremos que crear por cdigo una estructura condicional que controle si la entrada de datos es correcta o no. El cdigo es el siguiente: Private Sub Command1_Click() End End Sub Private Sub Check1_Click() If Text1.Text = "L" And Text2.Text = "O" And Text3.Text= "R" And Text4.Text ="O" then ' este cdigo debe ir todo en un mismo regln y 'chequea si se escribi una de las palabras correctas. Ciudado con los 'nombres de los Controles porque seguramente Ustedes no tendrn la 'misma numeracin que yo. (Otra aclaracin cuando usamos el carcter ' 'indicamos que todo lo que sigue es un comentario, por lo tanto la 'computadora no lo ejecuta lo saltea, no

es cdigo). Image1. Picture = LoadPicture(c:\vb\Icons\Misc\Face03.ico) 'carita linda Else 'Sino Image1. Picture = LoadPicture(c:\vb\Icons\Misc\Face01.ico) 'carita fea End Sub Private Sub Check2_Click() If Text2.Text = "O" And Text5.Text ="R" And Text9.Text ="O" then Image2.Picture = LoadPicture(c:\vb\Icons\Misc\Face03.ico) 'carita linda Else 'Sino Image2. Picture = LoadPicture(c:\vb\Icons\Misc\Face01.ico) 'carita fea End Sub Private Sub Check3_Click() If Text7.Text = "R" And Text8.Text ="A" And Text9.Text ="T" And Text4.Text ="O" And Text10.Text ="N" then Image3. Picture = LoadPicture(c:\vb\Icons\Misc\Face03.ico) 'carita linda Else 'Sino Image3. Picture = LoadPicture(c:\vb\Icons\Misc\Face01.ico) 'carita fea End Sub

Ejercicio N 3: Animacin del Osito.

Para esta animacin usamos un control especial que no est en la Caja de Controles estndar , para incluirlo vamos a Proyecto , Componentes y all seleccionamos Microsoft PictureClip Control y al aceptar , este se incluir en la Caja de Controles. Permanecer invisible en tiempo de ejecucin por lo tanto volcaremos su imagen en un control Picture comn que dibujaremos en el Formulario y dejamos vaco. En el formulario dibujamos un control Picture vaco sin Picture, con el fondo blanco y sin borde o sea con la propiedad Borderstyle a None. Luego dibujamos el PictureClip con las propiedades Col a 1 y Row a 9 , y agregamos un Timer control fundamental en todo tipo de animacin. El Timer es un cronmetro que repite una accin (hace un Bucle) o sentencia en Visual Basic de manera automtica e infinita, hasta que lo desactivamos o cerramos el programa. El control PictureClip es una grilla que despliega los distintos frames de la animacin que podemos ver en la imagen a la izquierda. Pueden grabar esta imagen y usarla en la propiedad picture para el ejercicio. Estos frames o cuadros de animacin tienen un ndice en esta imagen de 0 a 8.

Aqu tambin usamos el Mtodo Move para desplazar la imagen del Oso. El cdigo de cada procedimiento es el siguiente: Option Explicit Dim A As Integer 'declaramos a como variable entera Private Sub Form_Load() A = 9 ' Inicializamos la variable en 9. End Sub Private Sub Timer_Timer() A=A-1 If A = 0 then A = 8 'Al llegar al frame 0 vuelve a empezar Picture1.Picture = PictureClip1.GraphicCell(A) Picture1.Move Picture1.Left + 50, Picture1.Top + 50 'Mueve en diagonal End Sub Comenzamos con una variable = 9 porque los frames del osito deben disminuir y no aumentar sino d la impresin de caminar al revs.

Una propiedad fundamental del PictureClip es la GraphicCell ya que ella automatiza la divisin de la grilla(imagen total) en partes(frames). En este caso en el Move usamos los dos argumentos el Left y el Top de la imagen , propiedades que indican la ubicacin de sta en relacin al borde izquierdo (coordenada x) y al borde superior (coordenada y). Lo que permitir que el oso se mueva en diagonal. En la explicacin slo est detallado el movimiento del oso, en el formulario vemos agregadas otros controles Line e Image simulando una calle, un semforo y una seal de Stop, como para darles una idea de lo que podran agregar a la escena.

Ejercicio N 4: Sumas.

Este ejercicio elige en forma Aleatoria dos nmeros y los despliega en dos Labels para que el alumno luego, introduzca el valor correcto de la suma de ambos en un TextBox . Si est bien le aparecer la carita sonriente y sino la de disgusto. Luego volvern a aparecer otros dos nmeros para que siga sumando.

El botn Aplicar permite hacer la correccin mediante un Condicional. Algunos de estos temas son comunes a otros ejercicios. Por lo tanto nos centraremos en las funciones nuevas.

La funcin Rnd nos permite cargar en una variable un nmero aleatorio que en este caso definimos como entero Int (de Integer) y de 0 a 10. Num1 = int( Rnd * 10) Repetimos el procedimiento para Num2, el segundo sumando de nuestra cuenta. Para que realmente sea aleatorio debemos incorporar la sentencia Randomize en el Procedimiento Load del Formulario.

Otra funcin que utilizamos es Val que transforma una cadena de caracteres, en este caso el contenido de un Text en un valor numrico. Resultado = Val ( Text1.Text) Y luego con un condicional y el operador de suma + controlamos si el resultado es correcto: If resultado = Int(num1) + Int(num2) then... En el caso de resolver bien la cuenta pasa a cargar otros dos nmeros , iniciando una nueva cuenta. Pero necesitamos una espera en la aplicacin. Esto lo hacemos por cdigo con un bucle que asociado al reloj del sistema crea una pausa en la aplicacin. Para esto creamos un Procedimiento llamado Pausa. Posicionados en la ventana de cdigo , vamos a Tools/ Herramientas, Add Procedure/ Agregar Procedimiento, y en la ventana que se nos abre elegimos un Name para el mismo en este caso = Pausa y luego con los botones de opcin seleccionamos: Sub y Private. Damos el Aceptar y se cierra la ventana. Ahora veremos en nuestra ventana de cdigo un nuevo Procedimiento llamado Pausa. Incluido dentro de los procedimientos del objeto General. Luego lo llamaremos desde otra parte del programa con la sentencia Call. Para mayor claridad vamos al cdigo: Option Explicit Dim num1, num2, resultado As Integer Private Sub pausa() ' este el procedimiento creado por nosotros Dim comenzar Dim controlar comenzar = Timer Do Until controlar > = comenzar + 1.5 ' este es el bucle de espera controlar = Timer DoEvents ' esta sentencia evita un bucle egoista Loop End Sub Private Sub Command1_Click() num1 = Int(Rnd * 10) 'elige un nmero aleatorio

num2 = Int(Rnd * 10) 'elige un nmero aleatorio Text1.Text = "" Label1.Caption = num1 Label2.Caption = num2 Text1.SetFocus ' ubica el foco del cursor en el control Text1 Command2.Enabled = False Image1.Picture = Nothing 'vaca el contenido de la imagen End Sub Private Sub Command2_Click() Command2.Enabled = False resultado = Val(Text1.Text) If resultado = Int(num1) + Int(num2) Then Image1.Picture = Picture1.Picture Call pausa ' llama al procedimiento que creamos como Pausa Call Command1_Click 'este procedimiento llama a otra suma Else Image1.Picture = Picture2.Picture End If End Sub Private Sub Command3_Click() Unload Me End Sub Private Sub Form_Load() Randomize num1 = Int(Rnd * 10)'al cargarse el programa ya aparece una cuenta

num2 = Int(Rnd * 10) Text1.Text = "" Label1.Caption = num1'se vuelcan las variables en las Labels Label2.Caption = num2 Command2.Enabled = False'el botn aplicar est desactivado End Sub Private Sub Text1_Change() Command2.Enabled = True'al cambiar el texto se activa Aplicar End Sub

Ejercicio N 5: Torero.

Este ejercicio muestra una sucesin de Imgenes al estilo un show de diapositivas .Las imgenes las cargamos en controles Image a la izquierda del formulario invisibles, para luego convocarlas por cdigo y desplegarlas en la Image central, sta si con su propiedad visible = True.

La sucesin de imgenes la realiza un control Timer asociado a un contador , cada imagen se relaciona con un texto que desplegamos en una Label colocada debajo de la imagen central. Al llegar el contador a 12 se detiene la sucesin y se muestra una Label con los nombres de los creadores de la aplicacin. La Label = Reiniciar nos posibilita volver a comenzar sin salir de la aplicacin, para esto inicializa la variable A = 0 y pone el Timer nuevamente en funcionamiento.

El cdigo de los principales procedimientos es el siguiente: Option explicit Dim A as Integer Private Sub Label3_Click() ' esta es la label de reiniciar Timer1.enabled = True A=0 Label2.caption = "Lo primero es la coleta..." Label4.visible = False ' oculta a los Autores End Sub Private Sub Timer1_Timer() A=A+1 If A = 3 then Image13.Picture= Image1.Picture Label2.caption = "Y los tirantes despus..." ElseIf A = 4 then Image13.Picture = Image5.Picture Label2.caption = "enseguida la corbata..." Elseif A = 5 Then ' Y as las distintas opciones de Imgenes y de Texto. Label4.Visible = True ' muestra los Autores Timer1.enabled = False ' desactiva el Timer End If End Sub Controlen el orden de las Imgenes de acuerdo a su propia aplicacin, y los textos siguientes son: "Y una faja de chip..."

"El chaleco hay que ensancharlo ..." "la chaquetilla est bien..." "Una cinta desatada..." "Un beso ardiente ...dos...tres..." "Mezcla de llanto y de juego y un rezo de ella por l..." "Dios mo que vuelva zano! Si muere, muero tambin! La sintaxis de los textos se mantiene como en las fotos originales.

Ejercicio N 6: Sistema Solar.


Este ejercicio es similar al de las partes de la computadora. Una Imagen grande es particionada a travs de Labels transparentes que nos permiten en este caso identificar cada planeta por separado. Al pasar el puntero del mouse sobre el planeta este cambia por una manito lo que nos indica que es posible una interaccin. Y al clickear sobre el mismo despliega en la Label inferior el nombre del planeta. Vamos a centrarnos en las novedades que aporta este ejercicio en relacin al N1. Primero : podemos cambiar el puntero del mouse: Para esto en la propiedad MousePointer y MouseIcon de cada Label transparente haremos cierta modificaciones. MousePointer = 99 (Custome) ' O sea la opcin personalizada. MouseIcon = Seleccionamos de la carpeta Icons o de otra en especial el Icono que queremos mostrar. Segundo : Vemos en la Imagen Inferior que muestra la Aplicacin en ejecucin, dos botones : uno de Imprimir y otro de Salir, que en realidad no son Botones porque su forma es ovalada. Estos son Controles Shape de forma ovalada . Como el Control Shape es puramente decorativo y no responde a ningn Evento , entonces aqu tambin con un pequeo truco , le colocamos una Label transparente sobre la Shape con la propiedad Caption = Imprimir o Salir y ahora s la Label responde al Evento Click. Tercero: En la Shape Imprimir , al clickear sobre ella imprimimos el Formulario en tiempo de ejecucin. El cdigo es:

Private Sub Label13_Click() Form1.PrintForm End Sub

Ejercicio N 7: Cubos.
Este ejercicio y los tres siguientes usan en sus procedimientos el Drageo o Drag and Drop , que significa arrastrar y soltar y nos va a permitir mover un objeto en tiempo de ejecucin de un lugar a otro del formulario. Este tipo de ejercicios es muy til para los docentes que trabajan con los ms pequeos. Usamos tres controles Picture cargando en cada uno de ellos un icono que les guste. Y en la propiedad Dragmode de cada picture elegimos la opcin Automatic , la numero 1. Esto permitir mover los controles. Pero para que realmente se desplacen debemos agregar al procedimiento Form_DragDrop el siguiente cdigo: Private Sub DragDrop ( Source as control, X as Single, Y as Single) Source.Move x, y End Sub Dentro de los argumentos entre parntesis vemos Source que quiere decir origen, o sea el control de origen y esto es muy importante porque quiere decir que no hace falta que especifiquemos que picture estamos moviendo o arrastrando y soltando , el procedimiento lo registra de por s, y lo que debemos actualizarle son las nuevas coordenadas que leer el procedimiento a travs de x, y. Aqu usamos un mtodo ya conocido el Move. Al correr el programa podemos clickear sobre una de las figuras y manteniendo el botn izquierdo del mouse apretado arrastrarla a la nueva posicin que deseamos y luego soltarla.

Ejercicio N 8: Da Feliz.

Este ejercicio de drageo utiliza tambin imgenes que pueden desplegarse en controles picture o image . En este caso son Images con su propiedad stretch a true lo que permite usar iconos y poder agrandarlos. La Image1 la carita fea tiene la propiedad DragMode en 1 : Automtica. Y en la propiedad DragIcon tiene cargado el mismo icono para que cuando la arrastremos no se vea una ventana vaca. Pero ahora el procedimiento usado es el DragOver que detecta cuando pasamos por encima de un control determinado. En este caso es el cesto o la Image2 . Y el objetivo es que al arrastrar la carita fea sobre el cesto esta desaparezca, simulando que la estamos tirando dentro del cesto. Entonces el cdigo indicado ser: Private Sub Image2_DragOver (...) Image1.visible = False End Sub

Esto hace que al pasar la Image1 sobre la Image2 la primera se vuelva invisible lo que simula que la hemos tirado dentro del cesto. En tiempo de ejecucin se ver de la siguiente manera :

Ejercicio N 9: Compra de Productos.


En este ejercicio arrastramos las imgenes del telfono, reloj y filmadora, como si hiciramos una compra virtual sobre la calculadora y el valor del total, se va incrementando haciendo la cuenta de lo que gastamos. Los controles son cuatro Image , el botn que borra el total a pagar. Una caja

de texto que muestra el total y las dems son Labels indicativas. Cuando arrastramos la imagen vamos a observar que no drageamos un rectngulo o ventana vaca sino iconos que coinciden con la imagen elegida, para eso a cada imagen le cargamos su icono correspondiente en la propiedad DragIcon. No olvidarse poner la propiedad DragMode en 1. El cdigo es el siguiente: Dim total as integer ' Declaramos en la parte General la variable. Private Sub Command1_Click() Text1.text = "" ' vacimos la caja de texto. Total = 0 ' reiniciamos la variable a 0. End Sub Private Sub Image4_dragDrop (...) ' En imagen de la calculadora. If Source = Image1 then ' Aqu testeamos la imagen de origen. Total = total + 260 Elseif Source = Image2 then Total = total + 300 Elseif Source = Image3 then Total = total + 1400 End if Text1.text = total End Sub Ac vemos la importancia del argumento Source como control de origen, porque nos permite testear en el condicional a que imagen nos estamos refiriendo.

Ejercicio N 10: Ordenar de Menor a Mayor.

Este ejercicio usa el Drageo para que los alumnos ordenen los nmeros de Menor a Mayor.

Tenemos 3 Labels que muestran los nmeros a ordenar y otras 3 Labels que recibirn los nmeros drageados de las Labels anteriores. Y dos Botones El de Nmeros que a travs del procedimiento Azar elige tres nmeros aleatorios para cada label con la funcin Randomize y el Botn Corregir que chequea que estn ordenados realmente de menor a mayor. La Label7 muestra un "Bien" o un "Mal", de acuerdo a si el orden es correcto o no. El cdigo es el siguiente: Dim N1, N2, N3 as Integer ' declaramos las variables en General. Private Sub Command1_Click() ' Este es el botn Nmeros Label4.caption = "" Label5.caption = "" Label6.caption = "" ' vaciamos los nmeros ordenados Label1.visible = True Label2.visible = True Label3.visible = True ' volvemos visibles las Label que drageamos. Call Azar ' Convocamos al procedimiento creado en General. End Sub Private Sub Azar() ' creamos un procedimiento llamado Azar N1= int(Rnd * 10) + 1 ' elige un nmero aleatorio de 1 a 10 N2= int(Rnd * 10) +1 N3= int(Rnd * 10) +1 If N1 <> N2 And N2 <> N3 And N1 <> N3 then 'controla que no haya 2 nmeros iguales. Usamos los operadores <> y And. Label1.caption = N1 ' volcamos los valores de las variables en las labels. Label2.caption = N2

Label3.caption = N3 Else Exit Sub ' Si uno de los nmeros se repite sale de la Rutina y vuelve a llamarse al procedimiento Azar desde el Botn 1. End If End Sub Private Command2_Click () ' Este es el Botn Corregir. If Val(Label4.Caption) < Val(Label5.Caption) And Val(Label5.Caption) < Val(Label6.caption) Then ' Este condicional que controla el orden de los nmeros debe ir en una sola lnea. Label7.Caption = "Bien" Else Label7.caption= "Mal" End If End Sub Private Sub Form_Load() Randomize ' Reinicia la funcion Rnd Call Azar ' llama al procedimiento Azar. Private Sub Label4_DragDrop(..) Label4.Caption = Source ' La label que recibe el control de Origen toma el caption de este Origen. Source.visible = False ' oculta el control de origen una vez drageado. End Sub Este cdigo de la Label4_DragDrop lo repetimos para la Label5 y la Label6 y recordemos modificar su Dragmode a 1.

En tiempo de ejecucin luego de arrastrar las Labels 1 2 y 3 sobre las 4 5 y 6 y clickear en Corregir veremos una pantalla similar a la siguiente:

Ejercicio N 11: Control para Animacin

Una manera sencilla de desplegar una animacin es con el control Animation, este control no es standard por lo tanto lo debemos traer de Componentes del grupo Microsoft Windows Common Controls-2 5.0 o 5.0 Y por cdigo le vamos a asociar un archivo Avi sin sonido porque sino no lo carga , en este caso llamado FileCopy que se encuentra en el mismo directorio del proyecto por eso usamos App.Path que quiere decir el camino o ruta de la aplicacin. Y con open abrimos, stop detenemos y play ejecutamos y close cerramos. Private Sub Command1_Click() Animation1.Close Unload Me End Sub

Private Sub Form_Load() Animation1.Stop Animation1.Close Animation1.Open App.Path & "\FileCopy.AVI" Animation1.Play

End Sub El ejercicio puede bajarse de Aqu.

Ejercicio N 12: Imprimiendo con Printer.

En este formulario desplegamos datos en cajas de texto y a travs del Boton Imprimir vamos a darle salida a estos datos por la Impresora que el sistema tenga por defecto. Para esto usamos el objeto Printer, que nos permite controlar el texto, cambiar su aspecto, tamao, tipo y color de la fuente y coordenadas.

Private Sub Command1_Click() Printer.Orientation = 1 ' La orientacin del papel es vertical Printer.FontSize = 12 'Tamao de la letra Printer.Print 'Un rengln en blanco o salto de carro Printer.Print Printer.Print Printer.Print Tab(15); Label1.Caption; Tab(30); Text1.Text 'Aqu damos la orden de impresin del caption de la label1 a 15 espacios 'del margen izquerdo y luego a 30 espacios del margen izquierdo el 'contenido del texto. Printer.Print Printer.Print Printer.Print Tab(15); Label2.Caption; Tab(30); Text2.Text

Printer.Print Printer.Print Printer.Print Tab(15); Label3.Caption; Tab(30); Text3.Text Printer.Print Printer.Print Printer.Print Printer.Print Tab(15); Label4.Caption; Tab(30); Text4.Text Printer.Print Printer.Print Printer.Print Tab(15); Label5.Caption; Tab(30); Text5.Text Printer.Print Printer.Print Printer.Print Tab(15); Label6.Caption; Tab(30); Text6.Text Printer.EndDoc 'damos por terminada la impresin End Sub Este ejercicio nos permite de una manera simple poder distribuir la impresin de forma personalizada.

Ejercicio N 13: Una Barra de Herramientas.

Este ejercicio nos permite mostrar una barra de herramientas al clsico estilo Windows.

Usando el control Toolbar y el control ImageList para desplegar las imgenes en los botones de la barra de herramientas, tambin nos permite crear una barra de status con tres paneles, compuesta por tres paneles. Estos controles forman parte de Microsoft Windows Common Controls 5.0 que debemos

agregar de Componentes en la versin profesional de Visual Basic 5. Luego de crear sobre el Formulario la barra de status, con el botn derecho del mouse seleccionamos propiedades y all en la pestaa paneles vamos eligiendo cuantos queremos y cual ser su mensaje. En el control ImageList seleccionamos con el botn derecho del mouse propiedades y cargamos las imgenes que componen este repositorio de imgenes para luego por cdigo relacionarlas con los botones de la ToolBar. Private Sub Form_Load() Toolbar1.ImageList = ImageList1 'en el procedimiento load asociamos el control Imagelist a la Toolbar End Sub Private Sub Toolbar1_ButtonClick(ByVal Button As ComctlLib.Button) Select Case Button.Key Case Is = "camara" MsgBox "Esto es una camara" Set Image1.Picture = ImageList1.ListImages(1).Picture Case Is = "dibujo" MsgBox "Eso es para dibujar" Set Image1.Picture = ImageList1.ListImages(2).Picture Case Is = "nuevo" MsgBox "Esto abre un archivo nuevo" Set Image1.Picture = ImageList1.ListImages(3).Picture Case Is = "abrir" MsgBox "Esto abre un archivo existente" Set Image1.Picture = ImageList1.ListImages(4).Picture Case Is = "imprimir" MsgBox "Esto Imprime"

Set Image1.Picture = ImageList1.ListImages(5).Picture End Select End Sub En el procedimiento click de laToolbar mediante un Select Case asociamos cada botn a una imagen distinta de la ImageList y al cliquear desencadenamos la funcin MsgBox que nos identifica el botn al que nos referimos. Aqu juega un papel importante la propiedad Key que identifica a la imagen, como nica y no puede repetirse. La sentencia Set determina la asociacin entre los controles, fijndola.

Ejercicio N 14: Una Animacin Transparente.


Uno de los temas ms queridos relacionados con la programacin para nosotros es el tema de las Animaciones. Poco a Poco vamos a ir desarrollando ejercicios que vayan perfeccionando y mostrando distintas formas de crear animaciones en Visual Basic. Las que vimos hasta ahora usando el mtodo Move , el control PictureClip, y las secuencias de images o pictures activadas con un Timer, son las formas ms primitivas y sencillas de animacin. Hoy sumamos el Mtodo PaintPicture que dibuja una imagen sobre un fondo , pero al combinar mediante las constantes SRCAND y SRCINVERT dos versiones de la imagen: la mscara y el sprite o animacin en s permite trasparentar el fondo. En este caso vamos a desplegar la animacin sobre un control Picture con una imagen de fondo, pero podemos hacerlo sobre el formulario y cargar en este una imagen. Lo que debemos tener en cuenta es que el objeto sobre el que se despliega la animacin debe estar la propiedad ScaleMode en Pixel y no en Twips como lo es por defecto. Las constantes para desplegar mtodos grficos como SRCAnd y SRCINvert deben declararse en la parte General del Formulario. Pueden copiarse a mano o a travs del Visor de Apis. Usamos dos controles PictureClip uno para la mscar y otro para el Sprite (Ver Controles favoritos: PictureClip). Un Timer para desplegar la secuencia de los frames que componen la grilla en este caso la imagen completa del perro se compone de 4 columnas y 1 fila. Y un CommandButton que regula el inicio y fin

de la animacin. Const SRCAND = &H8800C6 ' (DWORD) dest = origen AND dest Const SRCINVERT = &H660046 ' (DWORD) dest = origen XOR dest Const SRCCOPY = &HCC0020 ' (DWORD) dest = origen Private Sub Command1_Click() If Command1.Caption = "Animacin" Then Timer1.Enabled = True Picture1.Refresh 'esta propiedad Refresh es muy importante ya que refresca el fondo para 'cambiar de cuadro en la secuencia. Command1.Caption = "Detener" Else Timer1.Enabled = False Command1.Caption = "Animacin" End If End Sub Private Sub Command2_Click() End End Sub Private Sub Form_Load() PictureClip1.Cols = 4 PictureClip1.Rows = 1 PictureClip2.Cols = 4 PictureClip2.Rows = 1 'Es mejor determinar la composicin de la grilla por cdigo ya que a veces 'al salir del programa el control Pictureclip no retiene los valores de la 'ventana de propiedades y vuele a su 1 a 1 por defecto.

End Sub Private Sub Timer1_Timer() Picture1.Refresh Dim x As Single, y As Single Static imagenactual As Integer Static xactual As Integer If imagenactual > 3 Then imagenactual = 0 If imagenactual < 0 Then imagenactual = 0 If xactual > 500 Then xactual = 0 If xactual < 0 Then xactual = 0 'Estos condicionales regulan la secuencia de los cuadros de la animacin, 'reinicindola y el movimiento cuando se escapa de la picture 'posicionndose otra vez al comienzo del margen izquierdo. Picture1.PaintPicture PictureClip2.GraphicCell(imagenactual), xactual, 220, , , , , , , SRCAND 'esta sintaxis debe estar en un solo rengln Picture1.PaintPicture PictureClip1.GraphicCell(imagenactual), xactual, 220, , , , , , , SRCINVERT 'esta sintaxis debe estar en un solo rengln imagenactual = imagenactual + 1 'avanza un cuadro la secuencia xactual = xactual + 20 ' se mueve 20 pixels a la derecha. End Sub

Vous aimerez peut-être aussi