안녕하세요. 델파이로 프로그램을 만드는데 몇가지 의문이 있어서요.
1. 이미지에 원을 그린 다음 다시 원래의 상태로 되돌리는 방법을 알고 싶습니다.
2. 원을 그리면 꼭 안이 채워진 원이 되는데 안은 투명하게 되고 선만 그릴수는 없나요. 무슨 방법이 있을 것 같은데.
3. 페이트 브러쉬를 보면 원을 그릴때 마우스를 떼기 전에는 실선 같은 것으로 그려지다가 버튼을 놓은면 원이 그 부분에 그려지고요. 왼쪽 마우스를 누르면 원을 그리는 것이 취소되는데 이 기능은 어떻게 구현하는 것인지 알고 싶군요.
내공이 높으신 분들의 한수를 부탁드립니다.
> 안녕하세요. 델파이로 프로그램을 만드는데 몇가지 의문이 있어서요.
> 1. 이미지에 원을 그린 다음 다시 원래의 상태로 되돌리는 방법을 알고 싶습니다.
> 2. 원을 그리면 꼭 안이 채워진 원이 되는데 안은 투명하게 되고 선만 그릴수는 없나요. 무슨 방법이 있을 것 같은데.
> 3. 페이트 브러쉬를 보면 원을 그릴때 마우스를 떼기 전에는 실선 같은 것으로 그려지다가 버튼을 놓은면 원이 그 부분에 그려지고요. 왼쪽 마우스를 누르면 원을 그리는 것이 취소되는데 이 기능은 어떻게 구현하는 것인지 알고 싶군요.
>
> 내공이 높으신 분들의 한수를 부탁드립니다.
질문에 대한 자세한 답변은 힘들고..
각각에 대한 Hint만을 드리겠습니다.
1번 이미지에 어떤 작업을 한후에 바로 그전으로 복구를 하려고 한다면
하나의 임시버퍼를 만들어둔후에 어떤 작업이 실행되기전의 이미지를 백업
받아 놓습니다. 그리고 이전의 이미지로 되돌리려 한다면 백업해둔 임시버퍼
의 이미지를 복사해서 되돌리면 될것같습니다..
2번 어떤 사각형이나 타원, 원을 그릴적에 안에 브러시 스타일로 채워지는
것을 막는 방법은.. CreateBrushIndirect라는 API 함수를 사용합니다.
이 함수는 하나의 구조체 인자를 받는데 lbStyle라는 필드의 값을 BS_NULL
로 해서 얻은 Brush 핸들을 사용합니다.
3번은 Canvas의 CopyMode 프로퍼티의 값을 이용한후 타원을 그려보세요.
cmSrcInvert값을 준후 한번 그린후 다시 그리면 타원이 깜쪽같이 깨끗이 없어
지는 것을 이용하면 됩니다.
정확한것은 직접 코딩해보시면서 알아보시길....