Rotating bitmaps
This procedure works by swapping each pixel's x and y coordiantes. Although we could
have used the Point and PSet methods, the SetPixel and GetPixel API funtions are much
quicker. The procedure reads in the RGB value for a pixel, swaps the x and y coordinates,
then sets it in the second picture.
Declarations Declare Function
SetPixel Lib _
"gdi32" Alias "SetPixelV" _
(ByVal hdc As Long, ByVal x As
Long, ByVal y As Long, _
ByVal crColor As Long) As Long Declare Function GetPixel Lib _
"gdi32" (ByVal hdc As Long, _
ByVal x As Long, ByVal y As Long) As Long
Code Public Sub rotateimage()
Dim x As Long
Dim y As Long
Picture2.Height = Picture1.Width
Picture2.Width = Picture1.Height For x = 0 To Picture1.Width
For y = 0 To Picture1.Height
Call SetPixel(Picture2.hdc, _
y, x, GetPixel(Picture1.hdc, x, y))
Next If x Mod 50 = 0 Then
DoEvents
Picture2.Refresh
End If
Next
DoEvents
Picture2.Refresh
End Sub
Notes
Make sure
that the Scalemode for both Picture1 and Picture2 are set to
Pixels, otherwise, you will end up reading a lot of
unnecessary points.
Jargon
RGB Value:
The colour code for a pixel. It
measures the amout of Red, Green and Blue in a pixel to make
the colour.
Pixel:
The
smallest graphic unit on the screen.
|