2014-07-21 2 views
1

vb.net에서 만들고있는 프로그램의 경우 사각형이 있고 이미지가 표시되고 화면에서 회전하고 움직여야합니다. 신속하고 반응 적으로 이동해야하므로 표준 RectangleShape를 사용하고 있습니다. 여기서 문제는 vb.net이이 직사각형을 회전시키는 내부 함수가 없다는 것입니다. 필자는 FillRectangle에 상응하는 Graphics를 사용할 수 없었습니다. 왜냐하면 별도의 비트 맵에 상수 DrawImage 함수가 필요하기 때문에 컴퓨터에서 필자가 사용하는 컴퓨터가 상당히 뒤떨어져 있기 때문입니다.Graphics를 사용하지 않고 RectangleShape 회전하기

그래서, 할 수있는 사각형이 할 수있는 방법이있다 :

  • 은 매우 CPU-unintensive 방식으로 무대 주위에 이동 회전 이미지를 잡고는

답변

0
Dim mxRotate As New Matrix() 

'75 being the arbitrary number I picked to rotate by 
mxRotate.Rotate(75, MatrixOrder.Append) 

e.Graphics.Transform = mxRotate 
e.Graphics.DrawRectangle(YourPen, YourRect) 
주셔서 감사합니다 성능에 관해서는 How to rotate JPEG using Graphics.RotateTransform without clipping

:

이것은 아마도 당신이 이미지를 회전 할 수 있습니다. 나는 이것 모두가 약간의 CPU를 사용할 것이라고 생각한다. 또는 옵션 인 경우 렌더링을 위해 DirectX 또는 OpenGL을 사용할 수 있습니다.

+0

아, 그게 문제입니다. 즉,이 이미지를 보유 할 별도의 비트 맵을 생성해야합니다.이 비트 맵은 모든 변경시 백그라운드 비트 맵으로 다시 그려지며 배경이 새로 고쳐집니다. 불행히도, 이것을 다루는 타이머가 25ms 간격으로 발사되도록 설정되어 있기 때문에 테스트 PC에서 많은 시간 지연이 발생하여 재생할 수 없게됩니다. –

+0

알겠습니다. 그러나 타이머를 기반으로하지는 않지만 M1 클릭 한 위치가 모퉁이에서 <5 픽셀 떨어져있는 경우 OnMouseDown과 같은 이벤트가 발생합니다. – Keith

+0

불행히도 키보드 입력에 따라 이동하기 때문에 이어야한다. –

관련 문제