Seite 1 von 1

DrawImageTiled(#Image, x, y, TileWith, TileHeight)

Verfasst: 13.04.2012 21:23
von Lambda
Habe ich für ein aktuelles Projekt gesucht. Im englischen Forum hab ich nur sehr große Lösungen gefunden.

Nicht ImageID() verwenden!
Hinzu kommt noch Width und Height zur Skalierung...

Code: Alles auswählen

Procedure DrawImageTiled(id, x, y, w, h)
  Protected tx, ty, temp, gw, gh, image_w, image_h
  
  image_w = ImageWidth(id)
  image_h = ImageHeight(id)
  
  For tx=0 To w/image_w-1
    For ty=0 To h/image_h-1
      DrawImage(ImageID(id), x+tx*image_w, y+ty*image_h)
    Next
  Next
  
  ; Bottom
  gh = h-(h/image_h)*image_h
  temp = GrabImage(id, #PB_Any, 0, 0, image_w, gh)
  
  For tx=0 To w/image_w-1
    DrawImage(ImageID(temp), x+tx*image_w, y+(h/image_h)*image_h)
  Next
  FreeImage(temp)
  
  ; Right
  gw = w-(w/image_w)*image_w
  temp = GrabImage(id, #PB_Any, 0, 0, gw, image_h)
  
  For ty=0 To h/image_h-1
    DrawImage(ImageID(temp), x+(w/image_w)*image_w, y+ty*image_h)
  Next
  FreeImage(temp)
  
  ; Edge
  gw = w-(w/image_w)*image_w
  gh = h-(h/image_h)*image_h
  temp = GrabImage(id, #PB_Any, 0, 0, gw, gh)
  DrawImage(ImageID(temp), x+(w/image_w)*image_w, y+(h/image_h)*image_h)
  FreeImage(temp)
EndProcedure