2014-11-12 2 views
0

wxWidgets를 사용하여 투명도가 인 복수 레이어 을 그릴 GUI를 설계하고 있습니다. 따라서 wxGraphicsContext으로 그려진 각 레이어에 대해 "공유 된"wxImage에 하나의 방법이 있습니다. 그러면 wxWindowpaintEvent 방법으로 그려집니다.wxWidgets 멀티 레이어 투명도 지원 도면

나는 정확히 wxImage과 동일한 차원의 배열에 레이어 데이터를 가지고 있으므로 물론 픽셀 단위로 그리거나 조작해야합니다. 현재 나는 drawRectangle - 루틴을 사용하고 있습니다. 내 생각에 이것은 매우 비효율적이다.

wxImage의 픽셀 데이터를 직접 조작하는 영리한 방법이있어 결과 이미지에서 각 레이어의 투명도를 계속 사용할 수 있습니까? 또는 1x1 픽셀 도면이 drawRectangle이면 충분합니까?

감사합니다.

+0

'drawRectangle()'이 무엇인지는 명확하지 않습니다. 또한,'wxGraphicsContext :: Create (wxImage &)'를 사용하거나 어떻게 이미지에 그려 넣을 까? –

+0

네, 맞습니다. 저는 정확히이 함수를 사용합니다. wxGraphicsContext :: Create (wxImage &)' – mad

답변

1

직접적으로 액세스하여 wxImage 픽셀을 효율적으로 조작 할 수 있습니다. 직접 연결된 두 개의 연속 RGB 및 알파 어레이에 저장됩니다.

문제는 일반적으로 변환된다 wxImage이 표시 될 수있는 wxBitmap로 - 이것은 비용이 많이 드는 작업이며,이를 원시 비트 맵 대신 직접 액세스 wxBitmap를 조작하는 데 사용될 수 피하기.

+0

답을 고맙습니다. 나는 그 픽셀 데이터에 접근하는 것에 대해 정확히 생각해 왔지만, 여러 레이어를 그린 픽셀에 대해 rgb와 alpha를 수동으로 계산하는 방법을 모른다. 이해하기 쉬운가요? – mad

+0

일반적으로 그렇게 간단한 것은 아니지만 일부 작업은 개별 픽셀에 쉽게 정의 할 수 있습니다. 나는 정말로 더 많이 말하기 위해 무엇을하고 있는지 이해하지 못합니다, 미안 해요. 요점은'wxImage :: GetData()'를 사용하여 픽셀을 직접 사용하거나 더 적합한 경우에 따라 'wxGraphicsContext'를 사용하여 그려주는 것입니다. –