Descripción general
----En la actualidad, en muchos CD de juegos y software de aprendizaje, a menudo se pueden ver varios
La tecnología de visualización gráfica se basa en el movimiento gráfico, el entrelazado, la forma de las gotas de lluvia, las persianas, el apilamiento de bloques de construcción y otros métodos de visualización para hacer que la imagen sea más animada y atractiva para la audiencia. Este artículo explorará cómo implementar varias técnicas de visualización gráfica en Delphi.
Principios básicos
----En Delphi, es muy sencillo mostrar una imagen. Simplemente defina un componente TImage en el formulario, establezca su atributo de imagen y luego seleccione cualquier archivo .ICO, .BMP, .EMF o .WMF válido, cárguelo. y el archivo seleccionado se mostrará en el componente TImage. Pero esto simplemente muestra los gráficos directamente en el formulario y no requiere ninguna habilidad. Para que la visualización gráfica tenga un efecto único, puede seguir los siguientes pasos:
---- Defina un componente TImage y cargue los gráficos que se mostrarán en el componente TImage primero. En otras palabras, cargue el contenido de los gráficos del disco en la memoria como un caché de gráficos.
----Cree un nuevo objeto de mapa de bits con el mismo tamaño que los gráficos en el componente TImage.
---- Utilice la función CopyRect de Canvas (copie el área rectangular de un lienzo en el área rectangular de otro lienzo), use técnicas y dé forma dinámica
en el contenido de un archivo de mapa de bits y luego muestra el mapa de bits en el formulario.
----Método de implementación
A continuación se presentan varias técnicas de visualización gráfica:
1.Efecto push-pull
Los gráficos que se mostrarán se introducen en la pantalla desde arriba, abajo, izquierda y derecha, y los gráficos antiguos originales en la pantalla se cubren al mismo tiempo. Este efecto se puede dividir en cuatro.
Hay tres tipos: pull-up, pull-down, left-pull y right-pull, pero los principios son similares. Tome el efecto pull-up como ejemplo.
Principio: Primero, mueva la primera línea horizontal colocada en el gráfico temporal a la última en el mapa de bits que se mostrará, y luego mueva las dos primeras líneas horizontales en el gráfico temporal a las dos últimas líneas horizontales que se mostrarán. luego mueve los primeros tres y los primeros cuatro??? hasta mover todos los datos gráficos. Durante el proceso de movimiento, puede ver que el mapa de bits mostrado flota de abajo hacia arriba, logrando un efecto pull-up.
Algoritmo del programa:
Procedimiento TForm1.Button1Click(Remitente: TObject);
var
nuevobmp: TBitmap;
i,bmpheight,bmpwidth:entero;
comenzar
newbmp:= TBitmap.Create;
newbmp.Width:=imagen1.Width;
nuevobmp.Altura:=imagen1.Altura;
bmpheight:=imagen1.Height;
bmpwidth:=imagen1.Width;
para i:=0 a bmpheight hacer
comenzar
newbmp.Canvas.CopyRect(Rect
(0,bmpalto-i,bmpancho,bmpalto),
imagen1.Lienzo,
Rect(0,0,bmpwidth,i));
form1.Canvas.Draw(120,100,newbmp);
fin;
nuevobmp.gratis;
fin;
2. Efecto escalonado vertical
Principio: divida los gráficos que se mostrarán en dos partes. Las líneas de escaneo impares se mueven de arriba a abajo y las líneas de escaneo pares se mueven de abajo hacia arriba, y ambas se realizan al mismo tiempo. Desde la pantalla, puedes ver que los gráficos más claros que aparecen en los extremos superior e inferior se mueven hacia el centro de la pantalla hasta que quedan completamente claros.
Algoritmo del programa:
procedimiento TForm1.Button4Click(Remitente: TObject);
var
nuevobmp:TBitmap;
i,j,bmpheight,bmpwidth:entero;
comenzar
newbmp:= TBitmap.Create;
newbmp.Width:=imagen1.Width;
nuevobmp.Altura:=imagen1.Altura;
bmpheight:=imagen1.Height;
bmpwidth:=imagen1.Width;
yo:=0;
mientras que i< =bmpheight lo hago
comenzar
j:=i;
mientras j>0 hacer
comenzar
nuevobmp.Canvas.CopyRect(Rect(0,j-1,bmpwidth,j),
imagen1.Lienzo,
Rect(0,bmpheight-i+j-1,bmpwidth,bmpheight-i+j));
newbmp.Canvas.CopyRect(Rect
(0,bmpaltura-j,bmpancho,bmpaltura-j+1),
imagen1.Lienzo,
Rect(0,ij,bmpwidth,i-j+1));
j:=j-2;
fin;
form1.Canvas.Draw(120,100,newbmp);
yo:=yo+2;
fin;
nuevobmp.gratis;
fin;
3. Efecto escalonado horizontal
Principio: El mismo principio que el efecto de entrelazado vertical, excepto que los gráficos divididos en dos grupos se mueven a la pantalla desde los extremos izquierdo y derecho respectivamente.
Algoritmo del programa:
procedimiento TForm1.Button5Click(Remitente: TObject);
var
nuevobmp:TBitmap;
i,j,bmpheight,bmpwidth:entero;
comenzar
newbmp:= TBitmap.Create;
newbmp.Width:=imagen1.Width;
nuevobmp.Altura:=imagen1.Altura;
bmpheight:=imagen1.Height;
bmpwidth:=imagen1.Width;
yo:=0;
mientras que i< =bmpwidth lo hago
comenzar
j:=yo;
mientras j>0 hacer
comenzar
newbmp.Canvas.CopyRect(Rect(j-1,0,j,bmpheight),
imagen1.Lienzo,
Rect(bmpwidth-i+j-1,0,bmpwidth-i+j,bmpheight));
newbmp.Canvas.CopyRect(Rect
(anchobmp-j,0,anchobmp-j+1,altobmp),
imagen1.Lienzo,
Rect(ij,0,i-j+1,bmpheight));
j:=j-2;
fin;
form1.Canvas.Draw(120,100,newbmp);
yo:=yo+2;
fin;
nuevobmp.gratis;
fin;
4. Efecto gota de lluvia
Principio: Mueva la última línea de exploración de los gráficos temporales de la primera a la última línea de exploración del mapa de bits visible en secuencia, permitiendo que esta línea de exploración deje su rastro en la pantalla. Luego, la penúltima línea de exploración de los gráficos temporales se mueve a la primera a la penúltima línea de exploración del mapa de bits visible en secuencia. Y así sucesivamente con las líneas de escaneo restantes.
Algoritmo del programa:
procedimiento TForm1.Button3Click(Remitente: TObject);
var
nuevobmp:TBitmap;
i,j,bmpheight,bmpwidth:entero;
comenzar
newbmp:= TBitmap.Create;
newbmp.Width:=imagen1.Width;
nuevobmp.Altura:=imagen1.Altura;
bmpheight:=imagen1.Height;
bmpwidth:=imagen1.Width;
para i:=bmphaltura hasta 1 hacer
para j:=1 a lo que hago
comenzar
nuevobmp.Canvas.CopyRect(Rect(0,j-1,bmpwidth,j),
imagen1.Lienzo,
Rect(0,i-1,bmpwidth,i));
form1.Canvas.Draw(120,100,newbmp);
fin;
nuevobmp.gratis;
fin;
5.Efecto de rejillas
Principio: divida los datos colocados en los gráficos temporales en varios grupos y luego muévalos secuencialmente desde el primer grupo al último grupo. La primera vez que cada grupo mueve la primera línea de escaneo a la posición correspondiente del mapa de bits visible y la segunda. time Mueva la segunda línea de escaneo, luego mueva la tercera y cuarta líneas de escaneo.
Algoritmo del programa:
procedimiento TForm1.Button6Click(Remitente: TObject);
var
nuevobmp:TBitmap;
i,j,bmpheight,bmpwidth:entero;
xgrupo,xcuenta:entero;
comenzar
newbmp:= TBitmap.Create;
newbmp.Width:=imagen1.Width;
nuevobmp.Altura:=imagen1.Altura;
bmpheight:=imagen1.Height;
bmpwidth:=imagen1.Width;
xgrupo:=16;
xcount:=bmpheight div xgroup;
para i:=0 a xcount hacer
para j:=0 a xgroup hacer
comenzar
newbmp.Canvas.CopyRect(Rect
(0,xcuenta*j+i-1,bmpwidth,xcuenta*j+i),
imagen1.Lienzo,
Rect(0,xcount*j+i-1,bmpwidth,xcount*j+i));
form1.Canvas.Draw(120,100,newbmp);
fin;
nuevobmp.Gratis;
fin;
6. Efecto bloque de construcción
Principio: es una variación del efecto de gota de lluvia. La diferencia es que el efecto de bloque de construcción mueve una parte del gráfico cada vez, no solo una línea de escaneo.
Algoritmo del programa:
procedimiento TForm1.Button7Click(Remitente: TObject);
var
nuevobmp:TBitmap;
i,j,bmpheight,bmpwidth:entero;
comenzar
newbmp:= TBitmap.Create;
newbmp.Width:=imagen1.Width;
nuevobmp.Altura:=imagen1.Altura;
bmpheight:=imagen1.Height;
bmpwidth:=imagen1.Width;
i:=bmphaltura;
mientras i>0 lo hago
comenzar
para j:=10 a lo que hago
comenzar
nuevobmp.Canvas.CopyRect(Rect(0,j-10,bmpwidth,j),
imagen1.Lienzo,
Rect(0,i-10,bmpwidth,i));
form1.Canvas.Draw(120,100,newbmp);
fin;
yo:=i-10;
fin;
nuevobmp.gratis;
fin;
Conclusión
Los efectos de visualización gráfica anteriores se han pasado a la computadora, el entorno de software es Delphi 3.0 y el entorno de hardware es una máquina compatible con Pentium 100M. Funciona muy bien.