Q&A

  • 투명창에서 폼바탕 갱신하는 법
* 사용환경 : 델파이5 / Windows 98



델파에서 투명창을 구현하려고 하니까

보통 form1.brush.style:=bsclear를 하더라구요



그래서 저도 했는데 바탕이 한번 변하고는 다른곳에

이동하면 갱신이 되질 않아서 문제가 많습니다.



그리고 누군가가 paint에 invalidate를 쓰라고

하는데 그거 문제가 상당히 많은 무식한 방법

( 리소스 측정기 : 자원사용량 100% )으로

다른 프로그램과의 심각한 문제가 있습니다.



paint함수에 form1.refresh나 form1.repaint도

마찬가지로 엄청나 짓을 하구요



다른 좋은 대책이 없을 까요 paint에 넣으면

너무 자원을 많이 잡아먹어서요



다른 좋은 방법 있으시면 답변을 부탁드립니다.

즐거운 시간 되시길





2  COMMENTS
  • Profile
    왕초보 2000.07.05 23:33
    김병결 wrote:

    > * 사용환경 : 델파이5 / Windows 98

    >

    > 델파에서 투명창을 구현하려고 하니까

    > 보통 form1.brush.style:=bsclear를 하더라구요

    >

    > 그래서 저도 했는데 바탕이 한번 변하고는 다른곳에

    > 이동하면 갱신이 되질 않아서 문제가 많습니다.

    >

    > 그리고 누군가가 paint에 invalidate를 쓰라고

    > 하는데 그거 문제가 상당히 많은 무식한 방법

    > ( 리소스 측정기 : 자원사용량 100% )으로

    > 다른 프로그램과의 심각한 문제가 있습니다.

    >

    > paint함수에 form1.refresh나 form1.repaint도

    > 마찬가지로 엄청나 짓을 하구요

    >

    > 다른 좋은 대책이 없을 까요 paint에 넣으면

    > 너무 자원을 많이 잡아먹어서요

    >

    > 다른 좋은 방법 있으시면 답변을 부탁드립니다.

    > 즐거운 시간 되시길

    >



    안녕하세요~ 저도 그런 프로그래밍을 여러번 해봤는데요...

    쉽진 않습니다.



    만약 표시해야할게 많고 복잡하다면 먼저 폼크기만큼 배경을 캡쳐해서

    변경될때마다 복구시켜줘야 합니다. 가령 투명 라벨인경우 바탕이 복구되지 않으면

    글자가 바뀔때 겹쳐지게 되거든요... 이문제가 해결되면 반은 성공한셈입니다.



    그 다음은 윈도우의 크기변경과 위치변경입니다.

    해보셔서 아시겠지만 배경을 그대로 끌고갑니다. 즉 위치가 바뀔때마다 배경을

    다시 캡쳐해야하는데...이것을 해결한 몇가지 소스를 분석해보니 모두

    윈도우를 hide하고 캡쳐하고 show 하더군요...쩝....



    즐플.....



  • Profile
    김병결 2000.07.07 09:46
    위의 답변은 감사합니다. 하지만

    이렇게 이렇게 해라라고 말씀한 하시면 전 어떻게 하라고 하시는지

    저도 답변하신거와 같은 생각을 하고 있고

    해봤었는데 안돼고 말썽이 생겨서 질문을 올렸습니다.



    구체적인 예시나 방법,명령을 알려주시면 감사하겠습니다.