Iso Tile Converter
Übersicht

![]() |
FirstdeathmakerBetreff: Iso Tile Converter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Weil ich sehe das gerade mal wieder verstärkt nach Iso Sachen gefragt wird, bastel ich an einem Tutorial welches einem alle benötigten Werkzeuge und Algos liefern soll. Als kleiner Teil dieses Tutorials habe ich eben ein Iso-Tile-Converter geschrieben. Damit könnt ihr Rechteckige Bodentiles in Topdownview auf Isometrische Ansicht rendern.
Dieses kleine Programm konvertiert normale rechteckige Tiles in Isometrische Tiles. Es funktioniert mit ALLEN Größen (egal ob gerade oder ungerade oder ungleiche Seitenlänge). Aber um sie nachher vernünftig kacheln zu können, sollte man besser gerade Seitenlängen benutzen, z.b. 16*18 oder 32*32) Und noch eine Sache: Das Program unterstützt auch den .png Alphachannel! Das ganze habe ich auch mal als .Exe für BB User kompiliert, damit diese das Programm auch nutzen können. Download 108 kb Code: [AUSKLAPPEN] Rem
Programmed by Christian Geißler aka Firstdeathmaker 1.5.2008 Free to copy & use End Rem SuperStrict Framework BRL.Blitz Import BRL.Max2D Import BRL.Retro Import BRL.PNGLoader Repeat Local filter:String = "Image Files:png,jpg,jpeg,bmp;All Files:*" Local path:String = RequestFile("Select a rectangular image",filter,False,CurrentDir()+"\") If FileType (path) = 1 Local image:TImage = LoadImage(path,DYNAMICIMAGE) If image TIsoConverter.ConvertImage(image) Else Notify "Invalid file format" EndIf Else Notify "File does not exist" EndIf Until Not Proceed ("Do you like to convert another picture?") End Type TIsoConverter Function ConvertImage:TImage(img:TImage) Local map:TPixmap = ConvertPixmap(LockImage(img),PF_BGRA8888) Local imgwidth:Int = ImageWidth(img) Local imgheight:Int = ImageHeight(img) Local newimg:TImage = CreateImage(imgwidth + imgheight, (imgheight + imgwidth)/2) Local newimgwidth:Int = ImageWidth(newimg) Local newimgheight:Int = ImageHeight(newimg) Local newmap:TPixmap = LockImage(newimg) For Local x0:Int = 0 Until newimgwidth For Local x1:Int = 0 Until newimgheight WritePixel(newmap,x0,x1,$00000000) Next Next For Local x0:Int = 0 Until imgwidth For Local x1:Int = 0 Until imgheight Local pixel:Int = ReadPixel(map,x0,x1) Local a:Byte = pixel Shr 24 Local r:Byte = (pixel Shl 8) Shr 24 Local g:Byte = (pixel Shl 16) Shr 24 Local b:Byte = (pixel Shl 24) Shr 24 DebugLog a +"."+ r +"."+ g +"."+ b + " "+pixel pixel = a*$1000000 + r*$10000 + g*$100 + b Local x:Int = (imgheight - imgwidth)/2 + (newimgwidth/2 + x0 - x1)-1 Local y:Int = (x0+1 + x1) / 2 WritePixel(newmap,x,y,pixel) Next Next UnlockImage newimg Local filter:String = "Image Files:png" Local path:String = RequestFile("Save Image (PNG)",filter,True,CurrentDir()+"\") If Lower(ExtractExt(path)) <> "png" path:+".png" SavePixmapPNG(newmap,path) Return newimg End Function End Type |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group