Sub DrawBitmapRotated(canvas1 As Canvas, Bitmap1 As Bitmap, SrcRect As Rect, DestRect As Rect, Degrees As Float)
Dim no As NativeObject = canvas1
no.RunMethod("rotate:::", Array(Degrees, DestRect.CenterX, DestRect.CenterY))
DrawBitmap(canvas1, Bitmap1, SrcRect, DestRect)
no.RunMethod("rotate:::", Array(-Degrees, DestRect.CenterX, DestRect.CenterY))
End Sub
Sub DrawBitmap(canvas1 As Canvas, Bitmap1 As Bitmap, SrcRect As Rect, DestRect As Rect)
If SrcRect = Null Then
Dim SrcRect As Rect
SrcRect.Initialize(0, 0, Bitmap1.Width, Bitmap1.Height)
End If
Dim p1 As Path
p1.InitializeRect(DestRect, 0)
canvas1.ClipPath(p1)
Dim sx, sy As Float
sx = (DestRect.Right - DestRect.Left) / (SrcRect.Right - SrcRect.Left)
sy = (DestRect.Bottom - DestRect.Top) / (SrcRect.Bottom - SrcRect.Top)
Dim x, y, width, height As Int
x = DestRect.Left - sx * SrcRect.Left
y = DestRect.Top - sy * SrcRect.Top
width = Bitmap1.Width * sx
height = Bitmap1.Height * sy
Dim d2 As Rect
d2.Initialize(x, y, x + width, y + height)
canvas1.DrawBitmap(Bitmap1, d2)
canvas1.RemoveClip
End Sub