±ÍÇÏ´Â ¼Õ´Ô À̽ʴϴÙ
·Î±×ÀÎ
ȸ¿ø°¡ÀÔ
  
  µ¨¸¶´ç °ø½Ä ÀºÇà°èÁÂ
  ÇϳªÀºÇà 227-910235-83607
  ¿¹±ÝÁÖ ÀÌ»ó±¹(¿î¿µÁø)
ÇÁ·ÎÁ§Æ® °Ô½ÃÆÇ
ÅõÇ¥°Ô½ÃÆÇ
µ¨¸¶´ç¼Ò°³
±âÃʺÎÅÍ È°¿ë±îÁö! µ¨ÆÄÀÌ ±³À° - µ¥ºê±â¾î
Áú¹®°ú ´äº¯ Áú¹®°ú ´äº¯ ÀÔ´Ï´Ù.
±Û³»¿ë - Áú¹®°ú ´äº¯
 [Áú¹®] À̹ÌÁö ¿µ¿ª ÁöÁ¤ Áú¹®ÀÔ´Ï´Ù.
±èö¹Î
(±èö¹Î)
2017-03-22 ¿ÀÈÄ 11:27:49
484ȸ Á¶È¸


÷ºÎÆÄÀÏ ´Ù¿î·Îµå
Tests.zip
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.