Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <GDIPlus.au3>
- #include <File.au3>
- #include <Array.au3>
- HotKeySet("{F8}", "SaveScreenshot")
- Global $GUIWidth = 600, $GUIHeight = 480
- $file = FileOpenDialog("Select file", @ScriptDir, "Heightmap (*.hmap)");
- If Not FileExists($file) Then Exit
- MsgBox(0, "Info", "Dopo aver caricato l'heightmap, usa F8 per salvare l'immagine come .bmp")
- _GDIPlus_Startup()
- $Gui = GUICreate("Heightmap Viewer", $GUIWidth, $GUIHeight)
- $Graphics = _GDIPlus_GraphicsCreateFromHWND($Gui)
- $Bmp = _GDIPlus_BitmapCreateFromGraphics($GUIWidth, $GUIHeight, $Graphics)
- $Buffer = _GDIPlus_ImageGetGraphicsContext($Bmp)
- $width = getWidth($file)
- $height = getHeight($file)
- Dim $map[$height][$width]
- For $y = 0 To $height - 1
- $line = FileReadLine($file, $y + 1)
- $split = StringSplit($line, ",", 2)
- _ArrayDelete($split, 30)
- For $x = 0 To UBound($split) - 1
- $map[$y][$x] = $split[$x]
- Next
- Next
- $blocPw = $GUIWidth / $width
- $blocPh = $GUIHeight / $height
- ConsoleWrite("$blocPw = " & $blocPw & @LF)
- ConsoleWrite("$blocPh = " & $blocPh & @LF)
- _GDIPlus_GraphicsClear($Buffer, 0xFF999999 + MakeColor(0))
- $brush = _GDIPlus_BrushCreateSolid()
- For $y = 0 To $height - 1
- For $x = 0 To $width - 1
- _GDIPlus_BrushSetSolidColor($brush, 0xFF999999 + MakeColor($map[$y][$x]))
- _GDIPlus_GraphicsFillRect($Buffer, $blocPw * ($x), $blocPh * $y, $blocPw, $blocPh, $brush)
- Next
- Next
- _GDIPlus_BrushDispose($brush)
- GUISetState(@SW_SHOW, $Gui)
- While 1
- _GDIPlus_GraphicsDrawImageRect($Graphics, $Bmp, 0, 0, 600, 480)
- Sleep(20)
- Switch GUIGetMsg()
- Case -3
- ExitLoop
- EndSwitch
- WEnd
- _GDIPlus_Shutdown()
- Func getWidth($fp)
- $line = FileReadLine($fp, 1)
- $linearr = StringSplit($line, "")
- $commacount = 0
- For $i = 1 To $linearr[0]
- If $linearr[$i] == "," Then $commacount += 1
- Next
- Return $commacount
- EndFunc ;==>getWidth
- Func getHeight($fp)
- Return _FileCountLines($fp)
- EndFunc ;==>getHeight
- Func MakeColor($index)
- $res = (0x070707 * Abs($index))
- If $index < 0 Then Return -$res
- Return $res
- EndFunc ;==>MakeColor
- Func SaveScreenshot()
- If _GDIPlus_ImageSaveToFile($Bmp, @MyDocumentsDir & "\heightmap.bmp") Then
- MsgBox(0, "Info", "Immagine salvata in: " & @CRLF & @TAB & @MyDocumentsDir & "\heightmap.bmp" & @CRLF)
- Else
- MsgBox(16, "Errore", "Impossibile salvare l'immagine!")
- EndIf
- EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement