Q&A

  • 폼위의 특정지점을 캡쳐하는 방법점 알려주세요
버튼을 누르면 자신의 폼위의 특정지점을 캡쳐할수 있는 방법점 부탁드립니다..
늘 도움 주시는 여러분들께 감사드립니다.
3  COMMENTS
  • Profile
    김상경 2005.11.11 17:56




    var
      P : Tpoint;
      DC : HDC;
      cap_bmp : TBitmap;
    begin
      p.x := 10// 캡쳐시작 위치(left)  
      p.y := 10// 캡쳐시작 위치(top)
      cap_bmp := TBitMap.Create;
      cap_bmp.Width := 438; // 캡쳐할 크기(가로)
      cap_bmp.Height := 290;// 캡쳐할 크기(세로)
      DC := GetDC(0);
      BitBlt(cap_bmp.Canvas.Handle, 0, 0, cap_bmp.Width, cap_bmp.Height, DC, p.x , p.y, SRCCOPY);
      ReleaseDC(0,DC);  
      
      Clipboard.Assign(cap_bmp);  // 클립보드로 복사

      cap_bmp.Free;

    이렇게 하심 될꺼예요.. 아마도. ^^;
    즐코~~
  • Profile
    몰파이 2005.11.11 21:34
    님 님 답변 넘 감사드려요
    제가 원하는 것은 화면의 어느지점을 기준으로가 아닌 폼의 기준으로 질문을 드린거거든요..
    가령 form1  이 있으면 그 폼의 특정지점 폼의 top에서 몇지점 left의 몇에서 몇 지점 등을
    캡쳐하는 방법을 원하거든염..
    답변점 ㅠㅠ
  • Profile
    김상경 2005.11.11 23:05
    흠 일단 폼위의 특정 지점의 좌표는

    var
      P : Tpoint;
      f_x, f_y : integer;

    p := mouse.cursorpos;
    f_x := p.x-left
    f_y := p.x-top;

    일단 위와 같이하믄 (f_x, f_y) 에 폼기준으로한 좌표값이 넘어 오니까요
    여기서 left로 얼마 만큼, top에서 얼마만큼이라는 예기는 기준점에서 거리니까 결국 가로세로 크기 아닌가요?
    일단 위의 내용만 적용하면 될 듯 한데요..
    위와 같이하고 조기

    BitBlt(cap_bmp.Canvas.Handle, 0, 0, cap_bmp.Width, cap_bmp.Height, DC, p.x , p.y,
    SRCCOPY);
    의 p.x, p.y를 f_x, f_y 로 바꾸면 될듯??
    이거 아님 다시욤. -_-;;;