VB-みんなで関数を作る-
■ このスレッドは過去ログ倉庫に格納されています
0072ヒッキ-@プログラミング ◆hky/PGis
NGNG'DestPicture :転送先のHDC(例:Picture1.hDC)
'SrcPicture :転送元HDC
'PictureWidth :横幅
'PictureHeight :縦幅
'Angle :角度
Public Sub Rotate _
(DestPicture As Long, _
SrcPicture As Long, _
PictureWidth As Long, _
PictureHeight As Long, _
Angle As Integer)
Dim i As Integer, j As Integer
Dim x As Single, y As Single '処理するピクセル位置(転送先)
Dim x_2 As Single, y_2 As Single '処理するピクセル位置(転送元)
Dim x_3 As Single, y_3 As Single
Dim x_temp As Single, y_temp As Single
Dim x_temp2 As Single, y_temp2 As Single
Dim Center As Single: Center = PictureWidth / 2
x = ((0 - Center) * Cos(Pi * Angle) - (0 - Center) * Sin(Pi * Angle))
y = ((0 - Center) * Sin(Pi * Angle) + (0 - Center) * Cos(Pi * Angle))
x_temp = ((1 - Center) * Cos(Pi * Angle) - (0 - Center) * Sin(Pi * Angle))
y_temp = ((1 - Center) * Sin(Pi * Angle) + (0 - Center) * Cos(Pi * Angle))
x_temp2 = ((0 - Center) * Cos(Pi * Angle) - (1 - Center) * Sin(Pi * Angle))
y_temp2 = ((0 - Center) * Sin(Pi * Angle) + (1 - Center) * Cos(Pi * Angle))
x_temp = x_temp - x
y_temp = y_temp - y
x_temp2 = x_temp2 - x
y_temp2 = y_temp2 - y
For j = 0 To PictureHeight
x_2 = x_temp2 * j + x
y_2 = y_temp2 * j + y
For i = 0 To PictureWidth
x_3 = x_temp * i + x_2 + Center
y_3 = y_temp * i + y_2 + Center
Call BitBlt(DestPicture, i, j, 1, 1, SrcPicture, x_3, y_3, SRCCOPY)
Next
Next
End Sub
■ このスレッドは過去ログ倉庫に格納されています