Visão geral
---- Atualmente, em muitos softwares de aprendizagem e CDs de jogos, muitas vezes você pode ver vários
A tecnologia de exibição gráfica depende de movimento gráfico, entrelaçamento, formato de gota de chuva, persianas, empilhamento de blocos de construção e outros métodos de exibição para tornar a imagem mais viva e atraente para o público. Este artigo explorará como implementar várias técnicas de exibição gráfica em Delphi.
Princípios básicos
----No Delphi, é muito simples exibir uma imagem. Basta definir um componente TImage no formulário, definir seu atributo de imagem e selecionar qualquer arquivo .ICO, .BMP, .EMF ou .WMF válido, carregar, e o arquivo selecionado será exibido no componente TImage. Mas isso apenas exibe os gráficos diretamente no formulário e não há nenhuma habilidade. Para que a exibição gráfica tenha um efeito único, você pode seguir os seguintes passos:
----Defina um componente TImage e carregue primeiro os gráficos a serem exibidos no componente TImage. Em outras palavras, carregue o conteúdo gráfico do disco na memória como um cache gráfico.
----Crie um novo objeto bitmap com o mesmo tamanho dos gráficos no componente TImage.
---- Use a função CopyRect do Canvas (copie a área retangular de uma tela para a área retangular de outra tela), use técnicas e modele dinamicamente
no conteúdo de um arquivo bitmap e, em seguida, exibe o bitmap no formulário.
----Método de implementação
Várias técnicas de exibição gráfica são apresentadas abaixo:
1.Efeito push-pull
Os gráficos a serem exibidos são puxados para a tela para cima, para baixo, para a esquerda e para a direita, e os gráficos antigos originais na tela são cobertos ao mesmo tempo. Este efeito pode ser dividido em quatro.
Existem três tipos: pull-up, pull-down, pull-up para a esquerda e pull-up para a direita, mas os princípios são semelhantes.
Princípio: Primeiro, mova a primeira linha horizontal colocada no gráfico temporário para a última no bitmap a ser exibido e, em seguida, mova as duas primeiras linhas horizontais no gráfico temporário para os dois últimos bitmaps a serem exibidos e. em seguida, mova os três primeiros e os quatro primeiros ??? até que todos os dados gráficos sejam movidos. Durante o processo de movimentação, você pode ver que o bitmap exibido flutua de baixo para cima, obtendo um efeito pull-up.
Algoritmo do programa:
Procedimento TForm1.Button1Click(Remetente: TObject);
var
newbmp: TBitmap;
i,bmpheight,bmpwidth:inteiro;
começar
newbmp:= TBitmap.Create;
newbmp.Width:=image1.Width;
newbmp.Height:=image1.Height;
bmpheight:=image1.Height;
largurabmp:=image1.Largura;
para i:=0 para bmpheight faça
começar
newbmp.Canvas.CopyRect(Rect
(0,bmpheight-i,bmpwidth,bmpheight),
imagem1.Canvas,
Rect(0,0,bmplargura,i));
form1.Canvas.Draw(120.100,newbmp);
fim;
newbmp.free;
fim;
2. Efeito escalonado vertical
Princípio: Divida os gráficos a serem exibidos em duas partes. As linhas de varredura com números ímpares são movidas de cima para baixo e as linhas de varredura com números pares são movidas de baixo para cima, e ambas são executadas ao mesmo tempo. Na tela, você pode ver que os gráficos mais claros que aparecem nas extremidades superior e inferior se movem em direção ao centro da tela até ficarem completamente nítidos.
Algoritmo do programa:
procedimento TForm1.Button4Click(Remetente: TObject);
var
newbmp:TBitmap;
i,j,bmpheight,bmpwidth:inteiro;
começar
newbmp:= TBitmap.Create;
newbmp.Width:=image1.Width;
newbmp.Height:=image1.Height;
bmpheight:=image1.Height;
largurabmp:=image1.Largura;
eu:=0;
enquanto eu<=bmpheight faça
começar
j:=eu;
enquanto j>0 faça
começar
newbmp.Canvas.CopyRect(Rect(0,j-1,bmpwidth,j),
imagem1.Canvas,
Rect(0,bmpheight-i+j-1,bmpwidth,bmpheight-i+j));
newbmp.Canvas.CopyRect(Rect
(0,bmpheight-j,bmpwidth,bmpheight-j+1),
imagem1.Canvas,
Rect(0,ij,bmplargura,i-j+1));
j:=j-2;
fim;
form1.Canvas.Draw(120.100,newbmp);
eu:=eu+2;
fim;
newbmp.free;
fim;
3. Efeito escalonado horizontal
Princípio: O mesmo princípio do efeito de entrelaçamento vertical, exceto que os gráficos divididos em dois grupos são movidos para a tela a partir das extremidades esquerda e direita, respectivamente.
Algoritmo do programa:
procedimento TForm1.Button5Click(Remetente: TObject);
var
newbmp:TBitmap;
i,j,bmpheight,bmpwidth:inteiro;
começar
newbmp:= TBitmap.Create;
newbmp.Width:=image1.Width;
newbmp.Height:=image1.Height;
bmpheight:=image1.Height;
largurabmp:=image1.Largura;
eu:=0;
enquanto eu<=bmpwidth faça
começar
j:=eu;
enquanto j>0 faça
começar
newbmp.Canvas.CopyRect(Rect(j-1,0,j,bmpheight),
imagem1.Canvas,
Rect(bmpwidth-i+j-1,0,bmpwidth-i+j,bmpheight));
newbmp.Canvas.CopyRect(Rect
(bmpwidth-j,0,bmpwidth-j+1,bmpheight),
imagem1.Canvas,
Rect(ij,0,i-j+1,bmpheight));
j:=j-2;
fim;
form1.Canvas.Draw(120.100,newbmp);
eu:=eu+2;
fim;
newbmp.free;
fim;
4. Efeito gota de chuva
Princípio: Mova a última linha de varredura dos gráficos temporários para a primeira até a última linha de varredura do bitmap visível em sequência, permitindo que esta linha de varredura deixe seu rastro na tela. Em seguida, a penúltima linha de varredura dos gráficos temporários é movida para a primeira a penúltima linha de varredura do bitmap visível em sequência. E assim por diante para as linhas de varredura restantes.
Algoritmo do programa:
procedimento TForm1.Button3Click(Remetente: TObject);
var
newbmp:TBitmap;
i,j,bmpheight,bmpwidth:inteiro;
começar
newbmp:= TBitmap.Create;
newbmp.Width:=image1.Width;
newbmp.Height:=image1.Height;
bmpheight:=image1.Height;
largurabmp:=image1.Largura;
para i:=bmpheight até 1 faça
para j:=1 eu faço
começar
newbmp.Canvas.CopyRect(Rect(0,j-1,bmpwidth,j),
imagem1.Canvas,
Rect(0,i-1,bmplargura,i));
form1.Canvas.Draw(120.100,newbmp);
fim;
newbmp.free;
fim;
5. Efeito Louvres
Princípio: Divida os dados colocados nos gráficos temporários em vários grupos e, em seguida, mova-os sequencialmente do primeiro grupo para o último grupo. Na primeira vez, cada grupo move a primeira linha de varredura para a posição correspondente do bitmap visível e a segunda. tempo Mova a segunda linha de varredura e, em seguida, mova a terceira e a quarta linhas de varredura.
Algoritmo do programa:
procedimento TForm1.Button6Click(Remetente: TObject);
var
newbmp:TBitmap;
i,j,bmpheight,bmpwidth:inteiro;
xgrupo,xcontagem:inteiro;
começar
newbmp:= TBitmap.Create;
newbmp.Width:=image1.Width;
newbmp.Height:=image1.Height;
bmpheight:=image1.Height;
largurabmp:=image1.Largura;
xgrupo:=16;
xcount:=bmpheight div xgroup;
para i:=0 para xcount faça
para j:=0 para xgroup fazer
começar
newbmp.Canvas.CopyRect(Rect
(0,xcontagem*j+i-1,bmplargura,xcontagem*j+i),
imagem1.Canvas,
Rect(0,xcontagem*j+i-1,bmplargura,xcontagem*j+i));
form1.Canvas.Draw(120.100,newbmp);
fim;
newbmp.Free;
fim;
6. Efeito de bloco de construção
Princípio: É uma variação do efeito gota de chuva. A diferença é que o efeito de bloco de construção move uma parte do gráfico a cada vez, não apenas uma linha de varredura.
Algoritmo do programa:
procedimento TForm1.Button7Click(Remetente: TObject);
var
newbmp:TBitmap;
i,j,bmpheight,bmpwidth:inteiro;
começar
newbmp:= TBitmap.Create;
newbmp.Width:=image1.Width;
newbmp.Height:=image1.Height;
bmpheight:=image1.Height;
largurabmp:=image1.Largura;
i:=bmphaltura;
enquanto eu>0 faço
começar
para j:=10 eu faço
começar
newbmp.Canvas.CopyRect(Rect(0,j-10,bmpwidth,j),
imagem1.Canvas,
Rect(0,i-10,bmplargura,i));
form1.Canvas.Draw(120.100,newbmp);
fim;
eu:=i-10;
fim;
newbmp.free;
fim;
Conclusão
Os efeitos de exibição gráfica acima foram transmitidos ao computador, o ambiente de software é Delphi 3.0 e o ambiente de hardware é uma máquina compatível com Pentium 100M. Funciona muito bem.