ScaleImage (tehnyt: Marcoder)
Author: Jare
Added: 9. huhtikuuta 2011 kello 22.11
Edited: 15. huhtikuuta 2011 kello 22.19
Category: Grafiikka
Description
Skaalaa kuvia nopeammin kuin CB:n ResizeImage-komento.
Tätä on aikojen saatossa moni kysellyt, niin päätin laittaa tänne, vaikka en ole itse tehnyt.
Code
Select all1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | SCREEN 1152,864,32,0
Global gScaledImage
gScaledImage = MakeImage(1, 1)
img = LoadImage("media/car.bmp")
Repeat
DrawImage ScaleImage(img, MouseX(), MouseY()), 0, 0
Text 0, 0, FPS()
DrawScreen
Forever
Function ScaleImage(_image, _width, _height)
//By: Marcoder
// Jos koko ei ole muuttunut niin ei tehdä mitään
If _width = ImageWidth(gScaledImage) And _height = ImageHeight(gScaledImage) Then Return gScaledImage
If _width <= 0 Or _height <= 0 Then Return gScaledImage
DeleteImage gScaledImage
gScaledImage = MakeImage(_width, _height)
// Tehdään temppikuva johon skaalataan ensin vain leveys
lTempImage = MakeImage(_width, ImageHeight(_image))
DrawToImage lTempImage
For x = 0 To _width - 1
sx# = Float(ImageWidth(_image)) / Float(_width) * Float(x)
DrawImageBox _image, x, 0, sx, 0, 1, ImageHeight(_image)
Next x
DrawToScreen
// Skaalataan myös pystysuunnassa
DrawToImage gScaledImage
For y = 0 To _height - 1
sy# = Float(ImageHeight(_image)) / Float(_height) * Float(y)
DrawImageBox lTempImage, 0, y, 0, sy, ImageWidth(lTempImage), 1
Next y
DrawToScreen
DeleteImage lTempImage
Return gScaledImage
End Function
|
Comments
No comments. You can be first!
Leave a comment
You must be logged in to comment.