2010-07-30 2 views
0

그림 상자로 만든 카드 게임을 만들었습니다. 카드를 넣을 수있는 빈 곳은 투명한 배경과 3D 테두리가있는 빈 그림 상자입니다. 그리고 나서 MouseMove 이벤트에 의해 움직이는 picturebox 인 현재 카드를 가지고 있습니다.마우스로 이동할 때 투명한 그림 상자가 깜박입니다.

투명 PictureBox 위에 카드를 끌면 마우스를 멈추고 사진을 새로 고칠 때까지 카드가 있던 곳이 카드에 남아 있습니다. 이것은 카드가 이미지로 설정되어 있지만 투명하게 설정된 현재 카드 배경을 가지고있는 경우이기도합니다 (배경을 녹색으로 설정하면 카드가 사라지게되므로 실제로 중요하지 않습니다).

해결 방법이 있습니까? DoubleBuffered를 시도했지만 성공하지 못했습니다. 감사!

답변

1

설명에서 코드가 어떻게 보이는지 분명하지 않습니다. 그러나이 문제를 해결 한 후에는 다음 문제를 해결해야합니다. 컨트롤이 겹쳐 질 때 Windows Forms에서 컨트롤의 투명도 효과가 작동하지 않습니다. 부모의 배경이 보일 것입니다. 움직이는 카드가 겹쳐있는 그림 상자의 내용을 볼 수 없습니다.

이것은 WPF에서 문제가되지 않으며 매우 다른 렌더링 모델입니다. 그러나 Windows Forms를 계속 사용하려면 양식의 OnPaint() 이벤트로이 작업을 수행해야합니다. 카드 테이블을 그린 다음 주식을 그린 다음 움직이는 카드를 그립니다. 카드가 움직이면 Invalidate()를 호출하여 양식을 다시 칠해 강제로 새 위치에 카드를 표시하십시오.

즉, 현재 문제를 해결하지 마십시오. 프로그램을 재 설계하십시오.

+0

고마워요, 이건 좋은 생각 같네요. 문제는 WPF에서 빨아 draggable 이미지 등 같은 물건을 만드는 방법을 모르겠다 –

+0

당신은 너무 그림 상자와 winforms에서 작동하도록 만들 수 있습니다. –

0

당신은 pictureBox.Move 행사에

Application.DoEvents(); 

를 호출 할 수 있습니다; 그래서 모든 배경 그림들이 스스로 다시 그려 질 것입니다.

+0

감사합니다. 좋았지 만 좋지 않았습니다. 여전히 깜박이며 마우스를 놓을 때 그림이 때때로 고정됩니다 –

관련 문제