Artikel ini memperkenalkan metode penerapan peralihan pengguliran gambar di Delphi dengan sebuah contoh. Program ini dapat mewujudkan siaran gulir gambar, dan melalui kode ini, gambar di jendela dapat dikontrol untuk menggulir ke atas Dengan menyesuaikan nilai bilah gulir kecepatan, kecepatan gulir juga dapat disesuaikan dengan mengklik "Berhenti". tombol, dan gambar akan berhenti bergulir.
Kode fungsi lengkapnya adalah sebagai berikut:
unit Unit1;antarmukamenggunakanWindows, Kelas, Grafik, Formulir, Kontrol, Menu,Dialog, StdCtrls, ExtCtrls, SysUtils, ComCtrls, Buttons;typeTForm1 = class(TForm)MainMenu1: TMainMenu;File1: TMenuItem;Open1: TMenuItem;N1: TMenuItem;Exit1 : TMenuItem;Help1: TMenuItem;TentangImageViewer1: TMenuItem;OpenDialog1: TOpenDialog;Options1: TMenuItem;ColorDepth1: TMenuItem;ScrollPanel1: TMenuItem;Panel1: TPanel;TrackBar1: TTrackBar;BitBtn2: TBitBtn;BitBtn1: TBitBtn;Label1: TLabel;Image1: TImage;N2: TMenuItem;prosedur Open1Click(Sender: TObject);prosedur Exit1Click(Sender: TObject);prosedur AboutImageViewer1Click(Sender: TObject);prosedur ColorDepth1Click(Sender: TObject);prosedur ScrollPanel1Click(Sender : TObject); prosedur TrackBar1Change(Pengirim: TObject); prosedur BitBtn1Click(Pengirim: TObject); prosedur BitBtn2Click(Pengirim: TObject); prosedur FormCreate(Pengirim: TObject); fBatal: Boolean;implementasi{$R *.DFM}prosedur TForm1.Open1Click(Pengirim: TObject);beginif OpenDialog1.Execute lalubeginImage1.Picture.LoadFromFile (OpenDialog1.FileName);//Impor file gambar Caption := 'Kontrol pergerakan dinamis gambar - ' + OpenDialog1. Nama File;/ /Ubah formulir titleend;end;procedure TForm1.Exit1Click(Sender: TObject);beginClose; //Keluar dari formend;prosedur TForm1.AboutImageViewer1Click(Sender: TObject);//Tentang startMessageDlg ('Kontrol pergerakan dinamis gambar untuk'+ #13'Delphi Graphics Studio' , mtInFormation,[mbOk], 0);akhir;prosedur TForm1.ColorDepth1Click(Sender: TObject);varstrDepth: String;begincase Image1.Picture.Bitmap.PixelFormat //Dapatkan kedalaman warna gambar pfDevice: strDepth := 'Tidak ada gambar';pf1bit: strDepth := '1-bit'; pf4bit : strDepth := '4-bit';pf8bit: strDepth := '8-bit';pf15bit: strDepth := '15-bit';pf16bit: strDepth := '16-bit';pf24bit: strDepth := '24-bit';pf32bit: strDepth := '32-bit'; pfCustom: strDepth := 'Custom';end;MessageDlg ('Kedalaman warna gambar:' + strDepth,mtInFormation, [mbOK], 0);//Memberikan informasi kedalaman warna gambarend;prosedur TForm1.ScrollPanel1Click(Sender: TObject);beginPanel1.Visible := bukan Panel1.Visible;ScrollPanel1.Checked := Panel1.Visible; /Ubah visibilitas ujung panel kontrol;prosedur TForm1.TrackBar1Change(Pengirim: TObject);beginnLines := TrackBar1.Position;TrackBar1.Hint := IntToStr (TrackBar1.Position);//Memberikan petunjuk tentang speedend;prosedur saat ini TForm1.BitBtn1Click(Sender: TObject);varW, H, I, J , LineBytes: Integer;Line: PByteArray; //Tentukan variabel tipe penunjuk Bmp: Tbitmap;R: TRect;beginif Image1.Picture.Bitmap.PixelFormat=pfDevice lalu //Bila gambar tidak dibuka, BeginMessageDlg ('Gambar tidak dibuka! ', mtInFormation, [mbOk], 0); //Berikan pesan kesalahan exit; //Keluar endelsefCancel := False;BitBtn1.Enabled := False; Bmp := Image1.Picture.Bitmap; //Dapatkan gambar BMP dan tentukan ukuran gambar W := Bmp.Width;H := Bmp.Height;LineBytes := Abs (Integer (Bmp.ScanLine [1]) -Integer (Bmp.ScanLine [0]));Line := AllocMem (LineBytes);for I := 0 hingga H - 1 dobeginif fCancel lalu //Periksa tanda break sebelum setiap loop (yaitu, tentukan apakah tombol stop ditekan) Break //Klik tombol "Stop" untuk berhenti menggulir gambar Pindah ((Bmp.ScanLine [0]), Line, LineBytes); //Salin baris pertama gambar untuk J := 1 ke H - 1 dobeginMove ((Bmp.ScanLine [J]), (Bmp.ScanLine [J - 1]), LineBytes);if (J mod nLines = 0) makabeginR := Rect (0, Panel1.Height + J-nLines,W, Panel1.Height + J);InvalidateRect (Handle, @R, False);UpdateWindow (Handle);end;end;Move (Line, (Bmp.ScanLine [Bmp.Height - 1]), LineBytes);R := Rect (0, Panel1.Height + H - nLines,W, Panel1.Height + H);InvalidateRect (Handle, @R, False);UpdateWindow (Handle);Application.ProcessMessages; //Izinkan loop dihentikan segera untuk menempatkan program pada keadaan awal;BitBtn1.Enabled := True; //Aktifkan tombol "Start" BitBtn2.Enabled := False; "Tombol" berhenti tidak validend ;prosedur TForm1.BitBtn2Click(Sender: TObject);beginfCancel := True; //Ubah tanda Fcancel nilai, hentikan pengguliran gambarend;prosedur TForm1.FormCreate(Pengirim: TObject);beginTrackBar1Change (self); //Panggil fungsi TrackBar1Changeend;end.