Q&A

  • 최용일님 너무 감사합니다. 하나만 더 물어볼께요.
최용일님 감사합니다.



하나만 더 물어볼께요. 아까 그 소스중에 없애라고 하신거 없앴거든요. 그런데



아직도 잔상이 그대로 남아있는데 어떻게 해야 하나요.



이 소스가 틀리나요?



procedure TForm1.FormResize(Sender: TObject);

var

WindowRgn: HRgn;

begin

WindowRgn := 0;

GetWindowRgn(Handle,WindowRgn);

DeleteObject(WindowRgn);

WindowRgn := CreateRectRgn(0,0,116,109);

SetWindowRgn(Handle,WindowRgn,True);

DeleteObject(WindowRgn);

end;



폼 위에 투명 이미지(gif)가 있거든요. 그런데 잔상은 그대로인데 뭐가 잘못된건가요?

1  COMMENTS
  • Profile
    최용일 2000.07.28 21:20
    안녕하세요. 최용일입니다.



    보내주신 소스느 저에게 없는 컴포넌트를 사용하셔서 제대로 확인은 못했지만 실행



    파일로 구현하실려는 의도를 알 수 있었습니다.



    코드중에 Brush.Style := bsClear; <- 이런 부분이 있더군요. 이건 말이 투명이지



    별다른 효과는 없습니다. 그냥 윈도밑의 배경을 캔버스에 그려주는것외에는...



    여기에 클릭한다고해서 밑에 있는 윈도우가 선택되지는 않습니다. 잔상은 이것때문에



    생기는 것이고요. 보니까 이미지가 무척 복잡하더군요. 이미지의 투명한 영역을 잘라



    내는 것도 장난이 아니겠구요. 물론 폐곡면을 이용하면 잘라내는 것은 가능하겠지만



    구해야하는 좌표가 한두개가 아니라 이건 미친짓이 될테죠.



    제 생각엔 MSAgent를 사용하시는것이 좋을듯하네요... 마소 홈페이지에 가시면 SDK가



    있읍니다. 이걸 사용해보세요...



    아! 자료실에 보시면 투명한효과를 내는 컴포넌트가 있습니다. 이걸 사용하신다면



    Brush.Style := bsClear;를 사용할때처럼 잔상은 생기지 않을것 같군요. 물론



    Brush.Style := bsClear;처럼 배경의 윈도가 선택되지는 않겟지만...



    ^^ 항상 즐코하세요.



    임규완 wrote:

    > 최용일님 감사합니다.

    >

    > 하나만 더 물어볼께요. 아까 그 소스중에 없애라고 하신거 없앴거든요. 그런데

    >

    > 아직도 잔상이 그대로 남아있는데 어떻게 해야 하나요.

    >

    > 이 소스가 틀리나요?

    >

    > procedure TForm1.FormResize(Sender: TObject);

    > var

    > WindowRgn: HRgn;

    > begin

    > WindowRgn := 0;

    > GetWindowRgn(Handle,WindowRgn);

    > DeleteObject(WindowRgn);

    > WindowRgn := CreateRectRgn(0,0,116,109);

    > SetWindowRgn(Handle,WindowRgn,True);

    > DeleteObject(WindowRgn);

    > end;

    >

    > 폼 위에 투명 이미지(gif)가 있거든요. 그런데 잔상은 그대로인데 뭐가 잘못된건가요?