Also in VB.NET sieht die gewünschte Funktion so aus:
Spoiler anzeigen
Code
Public Class MapOrganizer
Dim MapFile As String = "C:\Temp\Graue Bastion_GiTM Djamboo.fc2map"
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
PicBox1.Image = ReadImage(MapFile)
End Sub
Private Function ReadImage(ByVal sFile As String) As Image
Dim MyPicture As Image = Nothing
Dim Offset As Integer = 0
Using FileStream As FileStream = File.OpenRead(sFile)
FileStream.Seek(28, SeekOrigin.Begin) 'Set pointer to initial position
Offset = ReadInt32(FileStream) 'Creator
FileStream.Seek(Offset, SeekOrigin.Current)
FileStream.Seek(8, SeekOrigin.Current)
Offset = ReadInt32(FileStream) 'Author
FileStream.Seek(Offset, SeekOrigin.Current)
Offset = ReadInt32(FileStream) 'Name
FileStream.Seek(Offset, SeekOrigin.Current)
FileStream.Seek(80, SeekOrigin.Current)
ReadInt32(FileStream) 'MapSize
FileStream.Seek(4, SeekOrigin.Current)
ReadInt32(FileStream) 'GameMode
Dim num As Integer = ReadInt32(FileStream)
Dim num2 As Integer = ReadInt32(FileStream)
Dim num3 As Integer = ReadInt32(FileStream)
Dim num4 As Integer = ReadInt32(FileStream)
Dim num5 As Integer = CInt(num * num2 * num3 * num4 / 8)
If num5 > 0 Then
Dim array As Byte() = New Byte(num5 - 1) {}
FileStream.Read(array, 0, num5)
Dim bitmap As Bitmap = New Bitmap(num, num2)
Dim bitmapData As Imaging.BitmapData = bitmap.LockBits(New Rectangle(0, 0, bitmap.Width, bitmap.Height), Imaging.ImageLockMode.WriteOnly, Imaging.PixelFormat.Format32bppArgb)
Marshal.Copy(array, 0, bitmapData.Scan0, num5)
bitmap.UnlockBits(bitmapData)
MyPicture = bitmap
End If
End Using
Return MyPicture
End Function
Private Function ReadInt32(ByVal Stream As FileStream) As Integer
Dim array As Byte() = New Byte(4 - 1) {}
Stream.Read(array, 0, 4)
Return BitConverter.ToInt32(array, 0)
End Function
End Class
Alles anzeigen
Jetzt muss nur noch jemand diese Funktionen in AutoIt umsetzen!
Und der Beweis, dass es funktioniert ist gleich hier.
Ich habe die EXE aus VB.NET gleich hochgeladen.
Einfach starten - wenn ihr möchtet - und Load Map drücken. Danach wird die Karte dargestellt.
Ich habe die Exe selbst erstellt und weiss, dass sie keinen Virus enthält. Aber im Zweifel lieber einmal mehr prüfen, als einmal weniger.
Es ist der gleiche Code wie oben im Spoiler, ausser, dass ich beim Button Klick nun den Dateinamen abfrage.
Gruss Veronesi