RotateBitmap




'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.
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.










( rotatebitmap.html )- by Paolo Puglisi - Modifica del 17/12/2023