2011-05-07 1 views
0

나는 MS Paint와 비슷한 기능을 가진 wxWidgets 프로그램을 만들고 있습니다.wxWidgets에서 페인트와 같은 프로그램을 그리기위한 도구

저는 마우스를 드래그 할 때 한 픽셀을 작성하는 펜/연필 오브젝트를 만드는 다양한 방법을 알고 있습니다. 직사각형, 타원형, 선 등의 다른 일반적인 도구는 시각화에 문제가 있습니다. 원점을 설정하려면 마우스 왼쪽 버튼을 누르고 마우스를 드래그하면 일시적으로 원점에서 현재 마우스 위치까지 캔바스의 모양을 오버레이하여 마우 스 버튼을 놓을 때 마지막으로 모양에 커밋합니다.

이 프로세스를 만드는 가장 좋은 방법은 무엇입니까? 내가 생각할 수있는 유일한 해결책은 마우스 다운에 원점을 저장하고 마우스를 드래그하여 임시 변수를 현재 마우스 위치로 설정하는 것입니다. 마우스 위치가 바뀔 때마다 원점에서 저장된 마우스 위치까지 직사각형이 무효화됩니다. 마우스 단추를 놓으면 모양이 이미지 모델에 커밋됩니다.

의견을 먼저 보내고 싶습니다. 아직 구현하지 않았습니다. 이것이 최적의 솔루션입니까, 아니면 눈에 보이는 깜박임을 유발하는 경향이 있습니까? 훨씬 더 적합한 솔루션을 사용할 수 있습니까?

답변

1

비디오 디스플레이 하드웨어가 이제는 매우 빠르므로 그러한 영리함을 신경 쓸 필요가 없습니다.

여기이의 진정한 장점은 한 번 코드를 작성하고, 상관없이 사용되는 어떤 도구, 이미지에 모든 변경에 사용할 수있는 간단한 방법

 
- *Mouse moves with button down and tool X selected* 
- IF flagToolInUse THEN remove previous from image model 
- flagToolInUse = TRUE 
- Update image model with tool X 
- Draw image to invisible buffer 
- Copy buffer to display 
- Done 

- *Button released* 
- flagToolInUse = FALSE 
- Done 

입니다.

여기, wxWidgets에와 깜박임없는 이중 버퍼 디스플레이를 구현하는 방법에 대한 자세한 내용은 필요한 경우는 introduction (주로 창)

입니다
0

나는 그들이 어떻게하는지 체크 아웃하시기 바랍니다 FloatCanvas. wxPython 용이지만 "일반"wxWidgets를 사용하는 경우에도 몇 가지 아이디어를 제공해야합니다.

관련 문제