| miImage = member(“grafico.bmp”).image |
| 2. Objeto image del Stage. Los cambios efectuados en el objeto se reflejarán directamente sobre el Stage. |
| miImage = (the stage).image |
| 3. Objeto image autocontenido. No está tomado de ningún gráfico; hay que fijar el tamaño ( en pixels ) y la profundidad de color ( en bits ) |
| miImage = image (320,240,16) |
|
Truco: Para asignar este objeto imagen a un cast member, creamos desde la ventana Paint un gráfico cualquiera ( por ej: un punto negro ) y lo nombramos "vacio". Entonces: |
| member("vacio").image = miImage |
|
En los tres casos, salvo errores, la variable miImage contendrá el objeto image. Realmente, miImage guarda la dirección de memoria reservada para ese gráfico. Si, por curiosidad, hacemos "put miImage" desde la ventana message el resultado será algo como esto: -- < image: 4e2380> |
|
PRACTICA 1 En el archivo image1.dir se crean tres objetos image de diferente forma. Más adelante, cuando conozcamos funciones de dibujo, manipularemos los objetos.
|
|
member("migráfico.bmp").image.draw(0, 0, 25, 25, [#shapeType:#oval, #lineSize:2, #color: rgb(0, 0, 255)]) |
|
Fill(): Dibuja una línea o figura dentro de un objeto imagen con relleno. Su uso es muy parecido a Draw. Sintáxis: ObjetoImagen.image.fill ( x1,y1,x2,y2, parámetros de tipo de figura o grosor de línea o color ) #ShapeType: Tipos de figura posibles #oval, #rect, #roundRect, o #line. #LineSize: Grosor de línea #Color: Color del relleno #bgColor: Color del borde Ejemplo: |
|
member("migráfico.bmp").image.fill(0, 0, 25, 25, [#shapeType:#rectl, #color: rgb(0, 255, 255)]) |
|
PRACTICA 2 En image2.dir dibujamos con las funciones Draw y Fill directamente sobre el Stage.
|
|
GetPixel(): Devuelve el valor del color de una imagen en una coordenada concreta. El formato del resultado puede ser en RGB o en valor entero Sintáxis: ObjetoImagen.image.getPixel(point(x, y) {, #integer}) Si omitimos el parámetro #integer, el formato será RGB para profundidades de 16 y 32 bits y para profundidades de 1, 2, 4 y 8 bits la respuesta será en modo "índice de paleta". Para 32 bits, si la imagen incluye canal alfa, es mejor usar el modo entero para no perder su información. Ejemplo: |
|
put member("migráfico.bmp").image.getPixel(point(1, 1) ) |
|
Dará como resultado algo así: -- rgb( 0, 0, 255) |
|
SetPixel(): Fija el color de un pixel de una imagen en una coordenada concreta. Sintáxis: ObjetoImagen.image.SetPixel( x, y, color) Ejemplo: |
|
member("migráfico.bmp").image.setPixel ( 1, 1, rgb ( 0,0,255) ) |
|
Esto pinta de color azul el pixel de la posición (1,1), del bitmap "migráfico.bmp".
|
|
PRACTICA 3 En image3.dir puedes ver un ejemplo completo del uso de SetPixel y GetPixel.
|
|
(1) member("Destino.bmp").image.copyPixels(member("Fuente.bmp").image, rect(0, 0, 25, 25), rect(0, 0, 25, 25)) |
| Copia un rectangulo de 25x25 de la posición 0,0 del gráfico "fuente.bmp" al gráfico "destino.bmp" en la misma posición y tamaño. |
|
(2) member("Destino.bmp").image.copyPixels(member("Fuente.bmp").image, member("Destino.bmp").rect, member("Fuente.bmp").rect) |
| Copia por completo el gráfico "fuente.bmp" en el gráfico "destino.bmp". Si el tamaño fuera diferente se ajustaría al tamaño destino. |
|
(3) member("Destino.bmp").image.copyPixels(member("Fuente.bmp").image, member("Destino.bmp").rect, member("Fuente.bmp").rect, [#blendLevel: 50]) |
|
Copia por completo el gráfico "fuente.bmp" en el gráfico "destino.bmp" aplicando un nivel de transparencia del 50%.
|
|
member("migráfico.bmp").duplicate() member("otrográfico.bmp").duplicate(15) |
|
La primera orden copia "migráfico.bmp" en el primer cast libre y la segunda copia "otrográfico.bmp" en el cast 15. Es posible asignar a un miembro de reparto un objeto imagen. Ejemplo: |
| member ("migráfico.bmp").image = ObjetoImagen |
|
PRACTICA 4 En image4.dir puedes ver un ejemplo del uso de CopyPixels.
|
|
miAlfa = member("migráfico.bmp").image.extractAlpha() member("nuevo.bmp").image=miAlfa |
|
Esto crea un objeto imagen conteniendo el canal alfa y lo salva dentro del gráfico "nuevo.bmp". Si tenemos un gráfico de 32 bits con un canal alfa, resulta útil extraerlo para preservar el canal alfa porque si bajamos la profundidad de color de la imagen, pierdes la información del canal alfa. setAlpha(): Fija el nivel de transparencia del canal alfa entre 0 y 255. Valores bajos, más transparentes y valores altos, más opacos. Sintáxis: ObjetoImagen.setAlpha(nivelAlfa) |
| member("migráfico.bmp").image.setAlpha(50) |
|
useAlpha(): Habilita o no, la información de un objeto imagen con canal alfa. Sintáxis: ObjetoImagen..useAlpha Ejemplo: |
|
ObjetoImagen1.useAlpha= TRUE ObjetoImagen2.useAlpha= FALSE |
|
PRACTICA 5 En image5.dir tienes un ejemplo del uso de canales Alfa.
|
|
PRACTICA 6 En image6.dir hay un ejemplo del uso de mFlood(); función para colorear de Jordi Espuny.
|
Enlaces InteresantesMuy buenos ejemplos y tutoriales de Imaging Lingo: http://www.simtek.dircon.co.uk/deight/index.html
|
|
Pulsa aquí para bajar el Tutorial de Image+ Ejemplos ©2001 Pedro Agriarte e-mail:agriarte@openbank.es URL:http://www.geocities.com/agriarte |