Ringkasan
----Saat ini, di banyak perangkat lunak pembelajaran dan CD permainan, Anda sering dapat melihat berbagai macam
Teknologi tampilan grafis mengandalkan gerakan grafis, interlacing, bentuk tetesan hujan, tirai, penumpukan blok penyusun, dan metode tampilan lainnya untuk membuat gambar lebih hidup dan menarik bagi penonton. Artikel ini akan mengeksplorasi bagaimana menerapkan berbagai teknik tampilan grafis di Delphi.
Prinsip dasar
----Di Delphi, sangat mudah untuk menampilkan gambar. Cukup tentukan komponen TImage di Formulir, atur atribut gambarnya, lalu pilih File .ICO, .BMP, .EMF atau .WMF yang valid, muat, dan file yang dipilih akan ditampilkan di komponen TImage. Namun ini hanya menampilkan grafik langsung dalam bentuk, dan tidak ada skill sama sekali. Agar tampilan grafis mempunyai efek yang unik, Anda dapat mengikuti langkah-langkah berikut ini:
---- Tentukan komponen TImage, dan muat grafis yang akan ditampilkan ke dalam komponen TImage terlebih dahulu. Dengan kata lain, muat konten grafis dari disk ke dalam memori sebagai cache grafis.
----Buat objek bitmap baru dengan ukuran yang sama dengan grafik di komponen TImage.
----Gunakan fungsi CopyRect pada Canvas (salin area persegi panjang dari satu kanvas ke area persegi panjang di kanvas lain), gunakan teknik, dan bentuk secara dinamis
menjadi isi file bitmap, dan kemudian menampilkan bitmap dalam bentuk.
---- Metode implementasi
Berbagai teknik tampilan grafis diperkenalkan di bawah ini:
1. Efek dorong-tarik
Grafik yang akan ditampilkan ditarik ke dalam layar dari arah atas, bawah, kiri dan kanan, dan grafik lama asli di layar juga ditutup-tutupi. Efek ini dapat dibagi menjadi empat
Ada tiga jenis: pull-up, pull-down, left-pull, dan right-pull, namun prinsipnya sama. Ambil efek pull-up sebagai contoh.
Prinsip: Pertama, pindahkan garis horizontal pertama yang ditempatkan pada grafik sementara ke garis terakhir pada bitmap yang akan ditampilkan, lalu pindahkan dua garis horizontal pertama pada grafik sementara ke dua garis horizontal terakhir yang akan ditampilkan, dan lalu pindahkan tiga yang pertama dan empat yang pertama??? sampai semua data grafik dipindahkan. Selama proses pemindahan, Anda dapat melihat bitmap yang ditampilkan melayang dari bawah ke atas, menghasilkan efek pull-up.
Algoritma program:
Prosedur TForm1.Button1Click(Pengirim: TObject);
var
bmp baru: TBitmap;
i,bmpheight,bmpwidth:integer;
mulai
newbmp:= TBitmap.Buat;
newbmp.Lebar:=gambar1.Lebar;
newbmp.Tinggi:=gambar1.Tinggi;
bmpheight:=gambar1.Tinggi;
bmpwidth:=gambar1.Lebar;
untuk i:=0 hingga bmpheight lakukan
mulai
newbmp.Canvas.CopyRect(Rect
(0,bmpheight-i,bmpwidth,bmpheight),
gambar1.Kanvas,
Persegi(0,0,bmpwidth,i));
form1.Canvas.Draw(120.100,newbmp);
akhir;
newbmp.gratis;
akhir;
2. Efek terhuyung vertikal
Prinsip: Membagi grafik yang akan ditampilkan menjadi dua bagian. Garis pindaian bernomor ganjil dipindahkan dari atas ke bawah, dan garis pindaian bernomor genap dipindahkan dari bawah ke atas, dan keduanya dilakukan secara bersamaan. Dari layar, Anda dapat melihat bahwa grafik lebih terang yang muncul di ujung atas dan bawah bergerak ke arah tengah layar hingga benar-benar jelas.
Algoritma program:
prosedur TForm1.Button4Click(Pengirim: TObject);
var
bmp baru:TBitmap;
i,j,bmpheight,bmpwidth:integer;
mulai
newbmp:= TBitmap.Buat;
newbmp.Lebar:=gambar1.Lebar;
newbmp.Tinggi:=gambar1.Tinggi;
bmpheight:=gambar1.Tinggi;
bmpwidth:=gambar1.Lebar;
saya:=0;
sementara saya< =bmpheight lakukan
mulai
j:=saya;
sementara j>0 lakukan
mulai
newbmp.Canvas.CopyRect(Rect(0,j-1,bmpwidth,j),
gambar1.Kanvas,
Rect(0,bmpheight-i+j-1,bmpwidth,bmpheight-i+j));
newbmp.Canvas.CopyRect(Rect
(0,bmpheight-j,bmpwidth,bmpheight-j+1),
gambar1.Kanvas,
Persegi(0,ij,bmpwidth,i-j+1));
j:=j-2;
akhir;
form1.Canvas.Draw(120.100,newbmp);
saya:=i+2;
akhir;
newbmp.gratis;
akhir;
3. Efek terhuyung horizontal
Prinsip: Prinsip yang sama dengan efek interlacing vertikal, hanya saja grafik yang dibagi menjadi dua kelompok dipindahkan ke layar masing-masing dari ujung kiri dan kanan.
Algoritma program:
prosedur TForm1.Button5Click(Pengirim: TObject);
var
newbmp:TBitmap;
i,j,bmpheight,bmpwidth:integer;
mulai
newbmp:= TBitmap.Buat;
newbmp.Lebar:=gambar1.Lebar;
newbmp.Tinggi:=gambar1.Tinggi;
bmpheight:=gambar1.Tinggi;
bmpwidth:=gambar1.Lebar;
saya:=0;
sementara saya< =bmpwidth lakukan
mulai
j:=saya;
sementara j>0 lakukan
mulai
newbmp.Canvas.CopyRect(Rect(j-1,0,j,bmpheight),
gambar1.Kanvas,
Rect(bmpwidth-i+j-1,0,bmpwidth-i+j,bmpheight));
newbmp.Canvas.CopyRect(Rect
(bmpwidth-j,0,bmpwidth-j+1,bmpheight),
gambar1.Kanvas,
Rect(ij,0,i-j+1,bmpheight));
j:=j-2;
akhir;
form1.Canvas.Draw(120.100,newbmp);
saya:=i+2;
akhir;
newbmp.gratis;
akhir;
4. Efek rintik hujan
Prinsip: Pindahkan baris pindaian terakhir dari grafik sementara ke baris pindaian pertama hingga terakhir dari bitmap yang terlihat secara berurutan, sehingga baris pindaian ini meninggalkan jejaknya di layar. Kemudian, garis pemindaian kedua dari belakang dari grafik sementara dipindahkan ke garis pemindaian pertama hingga kedua dari belakang dari bitmap yang terlihat secara berurutan. Begitu seterusnya untuk sisa garis pindaian.
Algoritma program:
prosedur TForm1.Button3Click(Pengirim: TObject);
var
newbmp:TBitmap;
i,j,bmpheight,bmpwidth:integer;
mulai
newbmp:= TBitmap.Buat;
newbmp.Lebar:=gambar1.Lebar;
newbmp.Tinggi:=gambar1.Tinggi;
bmpheight:=gambar1.Tinggi;
bmpwidth:=gambar1.Lebar;
untuk i:=bmpheight turun menjadi 1 lakukan
untuk j:=1 harus saya lakukan
mulai
newbmp.Canvas.CopyRect(Rect(0,j-1,bmpwidth,j),
gambar1.Kanvas,
Persegi(0,i-1,bmpwidth,i));
form1.Canvas.Draw(120.100,newbmp);
akhir;
newbmp.gratis;
akhir;
5. Efek kisi-kisi
Prinsip: Bagilah data yang ditempatkan dalam grafik sementara menjadi beberapa grup, lalu pindahkan secara berurutan dari grup pertama ke grup terakhir. Pertama kali setiap grup memindahkan garis pindaian pertama ke posisi yang sesuai dengan bitmap yang terlihat, dan yang kedua waktu Pindahkan garis pindaian kedua, lalu pindahkan garis pindaian ketiga dan keempat.
Algoritma program:
procedure TForm1.Button6Click(Pengirim: TObject);
var
newbmp:TBitmap;
i,j,bmpheight,bmpwidth:integer;
xgrup,xcount:integer;
mulai
newbmp:= TBitmap.Buat;
newbmp.Lebar:=gambar1.Lebar;
newbmp.Tinggi:=gambar1.Tinggi;
bmpheight:=gambar1.Tinggi;
bmpwidth:=gambar1.Lebar;
grup x:=16;
xcount:=bmpheight div xgroup;
untuk i:=0 hingga xcount lakukan
untuk j:=0 hingga xgroup lakukan
mulai
newbmp.Canvas.CopyRect(Rect
(0,xhitung*j+i-1,bmpwidth,xhitung*j+i),
gambar1.Kanvas,
Rect(0,xcount*j+i-1,bmpwidth,xcount*j+i));
form1.Canvas.Draw(120.100,newbmp);
akhir;
newbmp.Gratis;
akhir;
6. Efek blok penyusun
Prinsip: Ini adalah variasi dari efek rintik hujan. Perbedaannya adalah efek blok penyusun menggerakkan sepotong grafik setiap saat, bukan hanya garis pindaian.
Algoritma program:
prosedur TForm1.Button7Click(Pengirim: TObject);
var
newbmp:TBitmap;
i,j,bmpheight,bmpwidth:integer;
mulai
newbmp:= TBitmap.Buat;
newbmp.Lebar:=gambar1.Lebar;
newbmp.Tinggi:=gambar1.Tinggi;
bmpheight:=gambar1.Tinggi;
bmpwidth:=gambar1.Lebar;
saya:=bmpheight;
sementara i>0 melakukannya
mulai
untuk j:=10 yang harus saya lakukan
mulai
newbmp.Canvas.CopyRect(Rect(0,j-10,bmpwidth,j),
gambar1.Kanvas,
Persegi(0,i-10,bmpwidth,i));
form1.Canvas.Draw(120.100,newbmp);
akhir;
saya:=i-10;
akhir;
newbmp.gratis;
akhir;
Kesimpulan
Efek tampilan grafis di atas telah diteruskan ke komputer, lingkungan perangkat lunak adalah Delphi 3.0, dan lingkungan perangkat keras adalah mesin yang kompatibel dengan Pentium 100M. Ini bekerja dengan baik.