RotateAndScaleImage

Image ››
Parent Previous Next

RotateAndScaleImage

Синтаксис

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