Delphi가 그림 스크롤 전환을 실현하는 완전한 실례 코드
전체 기능 코드는 다음과 같습니다.
unit Unit1;
interface
uses
Windows, Classes, Graphics, Forms, Controls, Menus,
Dialogs, StdCtrls, ExtCtrls, SysUtils, ComCtrls, Buttons;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
Open1: TMenuItem;
N1: TMenuItem;
Exit1: TMenuItem;
Help1: TMenuItem;
AboutImageViewer1: TMenuItem;
OpenDialog1: TOpenDialog;
Options1: TMenuItem;
ColorDepth1: TMenuItem;
ScrollPanel1: TMenuItem;
Panel1: TPanel;
TrackBar1: TTrackBar;
BitBtn2: TBitBtn;
BitBtn1: TBitBtn;
Label1: TLabel;
Image1: TImage;
N2: TMenuItem;
procedure Open1Click(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure AboutImageViewer1Click(Sender: TObject);
procedure ColorDepth1Click(Sender: TObject);
procedure ScrollPanel1Click(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
public
{ Public declarations }
end;
var
Form1: TForm1;
nLines: Integer;
fCancel: Boolean;
implementation
{$R *.DFM}
procedure TForm1.Open1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Image1.Picture.LoadFromFile (OpenDialog1.FileName);//
Caption := ' - ' + OpenDialog1.FileName;//
end;
end;
procedure TForm1.Exit1Click(Sender: TObject);
begin
Close; //
end;
procedure TForm1.AboutImageViewer1Click(Sender: TObject);//
begin
MessageDlg (' '+ #13'Delphi ', mtInFormation,
[mbOk], 0);
end;
procedure TForm1.ColorDepth1Click(Sender: TObject);
var
strDepth: String;
begin
case Image1.Picture.Bitmap.PixelFormat of //
pfDevice: strDepth := ' ';
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 (' :' + strDepth,mtInFormation, [mbOK], 0);//
end;
procedure TForm1.ScrollPanel1Click(Sender: TObject);
begin
Panel1.Visible := not Panel1.Visible;
ScrollPanel1.Checked := Panel1.Visible; //
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
nLines := TrackBar1.Position;
TrackBar1.Hint := IntToStr (TrackBar1.Position);//
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
W, H, I, J, LineBytes: Integer;
Line: PByteArray; //
Bmp: Tbitmap;
R: TRect;
begin
if Image1.Picture.Bitmap.PixelFormat=pfDevice then //
begin
MessageDlg (' !', mtInFormation, [mbOk], 0);//
exit; //
end
else
fCancel := False;
BitBtn1.Enabled := False; //
BitBtn2.Enabled := True;
Bmp := Image1.Picture.Bitmap; // BMP
W := Bmp.Width;
H := Bmp.Height;
LineBytes := Abs (Integer (Bmp.ScanLine [1]) -Integer (Bmp.ScanLine [0]));
Line := AllocMem (LineBytes);
for I := 0 to H - 1 do
begin
if fCancel then // ( )
Break; // “ ”
Move ((Bmp.ScanLine [0]), Line, LineBytes); //
for J := 1 to H - 1 do
begin
Move ((Bmp.ScanLine [J]), (Bmp.ScanLine [J-1]), LineBytes);
if (J mod nLines = 0) then
begin
R := 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; //
end;
BitBtn1.Enabled := True; // “ ”
BitBtn2.Enabled := False; // “ ”
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
fCancel := True; // Fcancel ,
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
TrackBar1Change (self); // TrackBar1Change
end;
end.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.