1. °³¹ß/½ÇÇà Ç÷§Æû (1) OS : Windows 10 (2) °³¹ßÅø : Delphi 10.1 (3) »ç¿ë Database :
2. °³¹ß ÁßÀÎ ÇÁ·Î±×·¥ À̹ÌÁö ¿µ¿ª ÁöÁ¤ ÀúÀå
3. Áú¹® ³»¿ë
¾Æ·¡ ¼Ò½º´Â ÷ºÎÆÄÀÏ°ú µ¿ÀÏÇÑ ¼Ò½ºÀÔ´Ï´Ù.
À̹ÌÁö ºÒ·¯¿Í¼ ¸¶¿ì½º µå·¹±× ÇÏ¿© ¿µ¿ª ÁöÁ¤ÇØÁÖ°í Á¤»óÀûÀ¸·Î µÇ´Â ¼Ò½ºÀÔ´Ï´Ù. ´Ù¸¸ Á¦°¡ ºÒ·¯¿À·Á´Â À̹ÌÁö°¡ Å©´Ùº¸´Ï À̹ÌÁöÄÄÆ÷³ÍÆ®¿¡¼ Stretch ¸¦ ÇØÁÖ¸é ¸¶¿ì½º·Î ¿µ¿ªÀÌ ÁöÁ¤ÀÌ ¾ÈµË´Ï´Ù. ÇØ°áÇÒ ¹æ¹ýÀÌ ÀÖÀ»±î¿ä?
unit frmMain;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, Vcl.ExtCtrls, JPEG, Vcl.ExtDlgs, Vcl.StdCtrls;
type TForm1 = class(TForm) MainMenu1: TMainMenu; File1: TMenuItem; LoadImage1: TMenuItem; SaveResult1: TMenuItem; ScrollBox1: TScrollBox; Image1: TImage; OpenPictureDialog1: TOpenPictureDialog; SavePictureDialog1: TSavePictureDialog; procedure LoadImage1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure SaveResult1Click(Sender: TObject); private { Private declarations } bmp:TBitmap; Procedure Draw_Res; public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
var jpg_tmp:TJPEGImage; isMouseDown:boolean=false; X0, Y0, X1, Y1:Integer;
procedure TForm1.FormCreate(Sender: TObject); begin jpg_tmp := TJPEGImage.Create; end;
procedure TForm1.FormDestroy(Sender: TObject); begin jpg_tmp.Destroy; bmp.Free; end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin isMouseDown := true; X0 := X; Y0 := Y; end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if isMouseDown then begin X1 := X; Y1 := Y; Draw_Res; end; end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin isMouseDown := false; end;
procedure TForm1.LoadImage1Click(Sender: TObject); begin OpenPictureDialog1.Filter := 'JPG|*.JPEG;*.jpg'; if OpenPictureDialog1.Execute then begin jpg_tmp.LoadFromFile(OpenPictureDialog1.FileName); Draw_res; end; end;
procedure TForm1.SaveResult1Click(Sender: TObject); var bmp:TBitmap; jpg_res:TJPEGImage; begin SavePictureDialog1.Filter := 'JPG|*.jpeg;*.jpg'; if SavePictureDialog1.Execute then begin bmp := TBitmap.Create; jpg_res := TJPEGImage.Create;
try bmp.PixelFormat := pf24bit; bmp.Width := abs(X1 - X0); bmp.Height := abs(Y1 - Y0); if X0 > X1 then X0 := X1; if Y0 > Y1 then Y0 := Y1; bmp.Canvas.Draw(-X0, -Y0, jpg_tmp); jpg_res.Assign(bmp); jpg_res.SaveToFile(ChangeFileExt(SavePictureDialog1.FileName, '.jpg')); finally bmp.Free; jpg_res.Free; end; end; end;
Procedure TForm1.Draw_Res; var bmp:TBitmap; begin bmp := TBitmap.Create; try bmp.PixelFormat := pf24bit; bmp.Width := jpg_tmp.Width; bmp.Height := jpg_tmp.Height; bmp.Assign(jpg_tmp);
bmp.Canvas.Brush.Style := bsClear; bmp.Canvas.Pen.Style := psDot; bmp.Canvas.Pen.Color := clRed; bmp.Canvas.Rectangle(X0, Y0, X1, Y1); Image1.Picture.Assign(bmp); finally bmp.Free; end;
end;
end.
|