Sub RotateAndScaleImageA(Byval GpbitmapSource As Any Ptr, 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 Any ptr=0)
Позволяет увеличивать в пропорциях и поворачивать изображение (битмап) на любой угол. В отличии от RotateAndScaleImage , вращает прозрачные битмапы, загруженные с помощью Load_imageA
GpbitmapSource - хендл прозрачного Gpbitmap, например может быть загружен с помощью Load_imageA
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 - хендл Gpbitmap, который станет подложкой( фоновым рисунком) для изображения hbmpDest. Может быть загружен с помощью Load_ImageA или преобразован из обычного битмапа с помощью CreateGPBitmapFromHBITMAP
Windows , Linux
рисунок для примера:
#Include "window9.bi"
Dim Shared As HBITMAP hbmpDest,hbmpBack
Dim Shared As Any Ptr hbmpSource
hbmpSource=Load_ImageA("Transpar.png")
hbmpDest=Create_Image(100,100)
hbmpback=Create_Image(100,100)
Dim As Integer event
Dim As HWND hwnd
Dim Shared As Any ptr gp_
Sub rot()
Static f As Single
RotateAndScaleImageA(hbmpSource,hbmpDest,50,50,40,40,f,f/300,f/300,,gp_)
SetImageGadget(1,hbmpDest)
f= f+1
If f>=360 Then f=0
Sleep(1)
End Sub
ImageStartDraw(hbmpBack)
For a As Integer=0 To 50 Step 10
BoxDraw(a,a,100-a*2,100-a*2,255,BGR(Int(Rnd*255),int(Rnd*255),int(Rnd*255)))
Next
StopDraw
gp_=CreateGPBitmapFromHBITMAP(hbmpBack)
hwnd=OpenWindow("Rotate",10,10,130,150) : CenterWindow(hwnd)
ImageGadget(1,5,5,100,100,hbmpBack)
Do
event=WindowEvent()
If Event=EventClose Then End
rot()
Loop
FreeGPBitmap(gp_)
Free_Image(hbmpDest)
Free_Image(hbmpback)
Created with the Personal Edition of HelpNDoc: Full featured Help generator