2014-07-21 42 views
1

對於我在vb.net中製作的程序,我需要有一個矩形,並在其上顯示圖像,旋轉並在屏幕上移動。它需要快速響應,因此我使用標準的RectangleShape。這裏的問題是,vb.net顯然沒有內置函數來旋轉這個矩形。我沒有真正能夠使用與FillRectangle相對應的Graphics等價物,因爲它對於我使用的計算機來說非常滯後 - 因爲它需要用於不同的位圖的常量DrawImage函數。在不使用圖形的情況下旋轉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

啊,看到這個問題。這涉及到然後創建一個單獨的位圖來保存此圖像,在每次更改時都必須重繪到背景位圖上,並刷新背景。不幸的是,由於定時器的處理時間設置爲每隔25毫秒觸發一次,所以它會在測試PC上造成大量滯後,使其無法播放。 –

+0

我明白了。但是,我可能不會基於計時器來實現,而是基於事件,如OnMouseDown,如果M1單擊位置距離角落<5像素等。 – Keith

+0

不幸的是,由於它是基於鍵盤輸入移動的,因此它必須。 –

相關問題