Sub RotateAndScaleImage(ByVal sourcehBmp As HBITMAP, ByRef hbmpDest As HBITMAP, ByVal X As Integer, ByVal Y As Integer,ByVal Xr As Integer,ByVal Yr As Integer,ByVal angle As Single,ByVal Xscale As Single=0,ByVal Yscale As Single=0,ByVal Color As integer=0,ByVal BGbitmap As HBITMAP=0)
Позволяет увеличивать в пропорциях и поворачивать изображение (битмап) на любой угол
sourcehBmp - хендл исходного изображения, может быть загружен с помощью Load_Image
hbmpDest - хендл (буфер) конечного изображения, может быть создан с помощью Create_Image
X - координата X расположения вращаемого рисунка hbmpSource в изображении hbmpDest
Y - координата Y расположения вращаемого рисунка hbmpSource в изображении hbmpDest
Xr - координата X центра радиуса вращения hbmpSource
Yr - координата Y центра радиуса вращения hbmpSource
angle - угол поворота от 0-360
Xscale - соотношение размера к исходному по оси X
Yscale - соотношение размера к исходному по оси Y
Color - фоновый цвет для изображения hbmpDest в формате ARGB (пример: &hff0000ff)
BGbitmap - хендл фонового рисунка для изображения hbmpDest. Может быть загружен с помощью Load_Image. Прозрачность hbmpSource не учитывается. Если нужно вращать изображение, загруженное из формата PNG или GIF с прозрачностью, то его нужно загрузить с помощью Load_imageA и вращать с помощью функции RotateAndScaleImageA
Windows
#Include "window9.bi"
Dim Shared As HBITMAP hbmpSource,hbmpDest
hbmpSource=Create_Image(80,80)
hbmpDest=Create_Image(100,100)
Dim As Integer event
Dim As HWND hwnd
Sub rot()
Static f As Single
RotateAndScaleImage(hbmpSource,hbmpDest,50,50,40,40,f,f/300,f/300,&hfff0f0f0)
SetImageGadget(1,hbmpDest)
RotateAndScaleImage(hbmpSource,hbmpDest,50,50,40,40,-f,f/300,f/300,&hfff0f0f0)
SetImageGadget(2,hbmpDest)
f= f+0.5
If f>=360 Then f=0
Sleep(1)
End Sub
ImageStartDraw(hbmpSource)
FillRectDraw(10,10,&hf0f0f0)
LineDraw(40,0,40,80,4,255)
LineDraw(0,40,80,40,4,&hFF0000)
StopDraw
hwnd=OpenWindow("Rotate",10,10,230,150) : CenterWindow(hwnd)
ImageGadget(1,5,5,100,100)
ImageGadget(2,105,5,100,100)
Do
event=WindowEvent()
If Event=EventClose Then End
rot()
Loop
Created with the Personal Edition of HelpNDoc: Easily create Help documents