Q&A

  • (급)터치스크린에서 싸인을 하고 BMP로 저장하는 방법을 알고싶습니다.
델파이의 초보인데 저에게 어려운 숙제가 생겨서 이렇게 글을 올립니다.

터치스크린화면에서 일정한 image box안에 sign을 입력하면 그것을

인식한 후 bmp file로 pc에 저장을 해야 합니다.

고난도의 기술인것 같아서 자문을 요청합니다.

도와주십시요..

2  COMMENTS
  • Profile
    윤진화 2000.04.11 06:09
    제 나름대로 간략한 그림그리기 기법을 통해서 그 그려진 그림을 BMP파일로 저장하는

    예제를 아래에 올립니다. 참고하세요.

    터치스크린 = 마우스..아시죠?



    type

    TForm1 = class(TForm)

    Image1: TImage;

    Button1: TButton;

    Button2: TButton;

    procedure Button1Click(Sender: TObject);

    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,

    Y: Integer);

    procedure Button2Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation



    {$R *.DFM}



    //이 버튼프로시져는 이미지컴포넌트를 하얀백지상태로 만듭니다.

    //"FillRect"대신 FloodFill를 쓰세요!

    procedure TForm1.Button1Click(Sender: TObject);

    var

    MyRect : TRect;

    begin

    MyRect.Left := 0;

    MyRect.Top := 0;

    MyRect.Bottom := 10;

    MyRect.Right := 10;

    Image1.Canvas.FillRect(MyRect);

    end;



    //이 부분이 중요한데요. 전 간단하게 마우스를 움직이면 빨간점이 생기도록 했습니다.

    //원하시는 내용이 아니지만요. 마우스 왼쪽 버튼을 클릭한 상태에서 움직이면 그려져야하죠?

    //그러기 위해서 "MouseDown" 이벤트와 "MouseUp" 이벤트에 상태 플래그, 즉 상태임수변수를

    //하나 만들어 주고

    //현재 마우스가 움직이는데 왼쪽버튼이 눌려져 있는냐? 그러면 그리고

    //왼쪽 버튼을 땠느냐? 그러면 그리기를 취소하고...

    //그림 그리는것도 픽셀에 색상을 입히는게 아니라 라인이나 다른 그리기 함수를 쓰셔야 합니다.

    //"싸인"이니깐 쫌 부드럽게 그려져야 하니깐요!

    procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,

    Y: Integer);

    begin

    Image1.Canvas.Pixels[X,Y] := clRed;

    end;



    //그려진 그림을 파일로 저장하는 버튼의 프로시져입니다.

    //임시 Bitmap 개체를 생성하고

    //그 Bitmap 개체에 Image1에 그려진 내용을 할당하고 저장합니다.

    procedure TForm1.Button2Click(Sender: TObject);

    var

    SaveBitmap : TBitmap;

    begin

    SaveBitmap := TBitmap.Create;

    SaveBitmap.Assign(Image1.Picture);

    SaveBitmap.SaveToFile('c:tempsample.bmp');

    SaveBitmap.Free;

    end;



    end.



    도움이 됐으면 합니다. 그럼~~

  • Profile
    정상락 2000.04.15 02:13
    윤진화씨 정말로 감사합니다.

    덕분에 간단하게 해결이 되었습니다.

    진심으로 감사드리며 좋은 하루가 되시길 바랍니다.



    윤진화 wrote:

    > 제 나름대로 간략한 그림그리기 기법을 통해서 그 그려진 그림을 BMP파일로 저장하는

    > 예제를 아래에 올립니다. 참고하세요.

    > 터치스크린 = 마우스..아시죠?

    >

    > type

    > TForm1 = class(TForm)

    > Image1: TImage;

    > Button1: TButton;

    > Button2: TButton;

    > procedure Button1Click(Sender: TObject);

    > procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,

    > Y: Integer);

    > procedure Button2Click(Sender: TObject);

    > private

    > { Private declarations }

    > public

    > { Public declarations }

    > end;

    >

    > var

    > Form1: TForm1;

    >

    > implementation

    >

    > {$R *.DFM}

    >

    > //이 버튼프로시져는 이미지컴포넌트를 하얀백지상태로 만듭니다.

    > //"FillRect"대신 FloodFill를 쓰세요!

    > procedure TForm1.Button1Click(Sender: TObject);

    > var

    > MyRect : TRect;

    > begin

    > MyRect.Left := 0;

    > MyRect.Top := 0;

    > MyRect.Bottom := 10;

    > MyRect.Right := 10;

    > Image1.Canvas.FillRect(MyRect);

    > end;

    >

    > //이 부분이 중요한데요. 전 간단하게 마우스를 움직이면 빨간점이 생기도록 했습니다.

    > //원하시는 내용이 아니지만요. 마우스 왼쪽 버튼을 클릭한 상태에서 움직이면 그려져야하죠?

    > //그러기 위해서 "MouseDown" 이벤트와 "MouseUp" 이벤트에 상태 플래그, 즉 상태임수변수를

    > //하나 만들어 주고

    > //현재 마우스가 움직이는데 왼쪽버튼이 눌려져 있는냐? 그러면 그리고

    > //왼쪽 버튼을 땠느냐? 그러면 그리기를 취소하고...

    > //그림 그리는것도 픽셀에 색상을 입히는게 아니라 라인이나 다른 그리기 함수를 쓰셔야 합니다.

    > //"싸인"이니깐 쫌 부드럽게 그려져야 하니깐요!

    > procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,

    > Y: Integer);

    > begin

    > Image1.Canvas.Pixels[X,Y] := clRed;

    > end;

    >

    > //그려진 그림을 파일로 저장하는 버튼의 프로시져입니다.

    > //임시 Bitmap 개체를 생성하고

    > //그 Bitmap 개체에 Image1에 그려진 내용을 할당하고 저장합니다.

    > procedure TForm1.Button2Click(Sender: TObject);

    > var

    > SaveBitmap : TBitmap;

    > begin

    > SaveBitmap := TBitmap.Create;

    > SaveBitmap.Assign(Image1.Picture);

    > SaveBitmap.SaveToFile('c:tempsample.bmp');

    > SaveBitmap.Free;

    > end;

    >

    > end.

    >

    > 도움이 됐으면 합니다. 그럼~~



    • hj998811
    • 2000.04.08 21:12
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 정상락
    • 2000.04.08 20:50
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 윤진화
      2000.04.11 06:09
      제 나름대로 간략한 그림그리기 기법을 통해서 그 그려진 그림을 BMP파일로 저장하는 예제를 아래에 올립...
    • 정상락
      2000.04.15 02:13
      윤진화씨 정말로 감사합니다. 덕분에 간단하게 해결이 되었습니다. 진심으로 감사드리며 좋은 하루가 되...
    • 장민석
    • 2000.04.08 20:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이치형
      2000.04.08 21:19
      장민석 wrote: > 잘되던 프로그램이었는데 IP를 바꾸고 나서 다음과 같은 error 가 뜨네요 > 해결방법은 ...
    • 강동길
    • 2000.04.08 20:39
    • 3 COMMENTS
    • /
    • 0 LIKES
    • OD
      2000.04.09 03:08
      안녕하세요. OD입니다. OnDataChange Event의 맨 처음 부분에 다음을 추가해 보세요. if Field = nil the...
    • 이치형
      2000.04.08 21:33
      강동길 wrote: > 사용환경 : WIN98, DELPHI 4, MS-SQL SERVER 7.0 > 안녕하세요... > 실력이 미흡하여 ...
    • 강동길
      2000.04.08 22:32
      이치형님 답변에 감사드립니다. 에러 위치는 알고 있는데 왜 에러가 나는지 잘 모르거든요... qry_nego...
    • 창백한달빛
      2000.04.08 20:49
      hee wrote: > 제목 그대로 입니다. bde나 odbc를 이용하지 않고 직접 연결 하는 방법이 없나해서요. ...
    • 조규춘
      2000.04.08 20:55
      타락천사 wrote: > 안녕하세여.. 타락임다.. 꾸벅.. > > 한델에서 열쒸미 배우고 있섭니다.. 감사함다....
    • 이치형
      2000.04.08 21:10
      타락천사 wrote: > 안녕하세여.. 타락임다.. 꾸벅.. > > 한델에서 열쒸미 배우고 있섭니다.. 감사함다....
    • 타락천사
      2000.04.08 21:06
      안녕하세여.. 타락임다.. ^^ 3개 이상의 조합키가 궁금했는데, 해보니까 돼더군여..^^ ..님 감사합니...
    • 사노테
    • 2000.04.08 19:37
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이치형
      2000.04.08 20:58
      사노테 wrote: > BDE Administrator을 써서 DataBase DB 라고 하나 만들어 넣고여.. > 아무것두 안하구 ...
    • 타락천사
      2000.04.08 23:56
      안녕하세여. 타락임다.. 꾸벅... 흠.. ..님이 답변해 주셨는데, 제 질문은 그게 아니였는데.. ^^;;;; ...
    • 타락천사
      2000.04.09 02:58
      안녕하세여.. 타락임다.. 꾸벅.. ShortString 과 AnsiString을 구분해서 써야해여.. 제가 통신에 쓰...
    • 황 현
    • 2000.04.08 19:03
    • 0 COMMENTS
    • /
    • 0 LIKES
    • mr.Q
    • 2000.04.08 12:16
    • 3 COMMENTS
    • /
    • 0 LIKES
    • mr.Q
      2000.04.08 13:18
      헉~ i1이 하나의 변수인데, 제가 잘못봤습니다. 죄송~
    • 최용일
      2000.04.08 12:32
      울랄랄라~ 델파이 6이 새로 나왔나 보네요... 저두 하나 보내주세요... 델파이 1~5까진 안되는 내용인데...
    • mr.Q
      2000.04.08 12:48
      헉~~ 아직 안주무시나요? 무지 배고픈 밤이네요. ^^ 저 코드를 쓴 사람은, 델4를 썼는데, 문법을 개조한 ...
    • mr.Q
      2000.04.08 12:43
      이렇게 하니 되는군요. implementation {$R *.DFM} var keyTag:integer; procedure TForm1...
    • mr.Q
      2000.04.08 13:16
      일부 수정 mr.Q wrote: > > 이렇게 하니 되는군요. > > implementation > > {$R *.DFM} > va...
    • 이용현
    • 2000.04.08 08:33
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.04.08 23:01
      안녕하세요. 최용일입니다. constructor는 객체에 인스턴스를 링크시키는 역활을 할 뿐 어떤 에러 코드...
    • 음냐~
      2000.04.08 08:47
      이 질문은 밑빠진 독에 불부으면 물이 가득차냐는 질문이랑 같습니다. 이용현 wrote: > TFilestream.Cr...
    • 최용일
      2000.04.08 10:52
      안녕하세요. 최용일입니다. 에고~ 에고~ 두가지가 있다고 했는데 한가지만 설명드렸네요. 날이 갈수록 ...
    • 최용일
      2000.04.08 08:15
      안녕하세요. 최용일입니다. 오른쪽 정렬은 아래와 같이 텍스트 출력하는 부분만 약간 수정하시면 될것 ...
    • 황현동
    • 2000.04.08 05:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 조규춘
      2000.04.08 06:17
      황현동 wrote: > 무슨 키 누르면 뭐해라 (폼에서) > > 대충 아주 간단한 예제라도 하나 알려주세요 ...
    • 황현동
    • 2000.04.08 05:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.04.08 23:16
      안녕하세요. 최용일입니다. FindFirst, FindNext, FindClose함수를 이용하면 구현하실 수 있습니다. ...