Gekacheltes Bild entkacheln?

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von St0on.

    Gekacheltes Bild entkacheln?

    Hallo Community,

    Sry erstmal für diese Überschrift :/

    Nun zur meiner Frage:
    Wie krieg ich es hin ein gekacheltes Bild zu entkacheln und diese zu nutzen?

    Beispiel:
    Ein 64p x 64p großes Bild. In diesem Bild sind 16 (4x4) Bilder untergebracht, mit jeweils der Größe 16p x 16p

    Nun möcht ich das Bild aufteilen das ich dann 16 Bilder frei benutzen kann.


    Ich hoffe um schnelle und freundliche Hilfe ^^

    Danke im vorraus.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „St0on“ ()

    Hmm, ich weiß auch nicht. Ich hab grad ein dickes Brett vorm Kopf oder so. -.-

    Ich glaub einfach ich hab heut nicht gut geschlafen... xD

    1. Krieg ich das überhaupt nicht hin
    2. Hab ich einfach auf den Erledigt Button gedrückt....

    Ich hoffe ma das wird hier trotzdem noch gelesen.

    Ich komm einfach nicht weiter das einzige was ich nun habe ist das:

    VB.NET-Quellcode

    1. For x As Integer = 0 To 64 Step 16
    2. For y As Integer = 0 To 64 Step 16
    3. MessageBox.Show("x: " & CStr(x) & ",y: " & CStr(y))
    4. Next
    5. Next

    Und das ist auch schon ziemlich lächerlich :cursing:

    VB.NET-Quellcode

    1. For x As Integer = 0 To 64 Step 16
    2. For y As Integer = 0 To 64 Step 16
    3. Dim rect As New Rectangle(x, y, 16, 16)
    4. ' DrawImage(imageSource, sourceRectangle, destinationRectangle)
    5. g.DrawImage(sourceImage, rect, New Rectangle(0, 0, 16, 16))
    6. Next
    7. Next


    soviel mal zum Prinzip, ich kenne die Methode nicht genau wo man eine Rectangle aus einem bestehenden Bild rausbekommst, aber so würde das Prinzip lauten. Es gibt soweit ich weiß eine Funktion wo man 2 Rectangle angeben kann, zum einen das Rectangle welches aus dem Quellbild genommen wird und das zweite Rectangle gibt die Position des Ausschnitts im neuen Bild an.

    im Ersten Durchlauf ist das Source Rectangle auch x=0, y=0, breite=16, höhe=16
    2. Durchlauf: x=0, y=16, breite=16, höhe=16
    3. Durchlauf: x=0, y=32, breite=16, höhe=16
    4. Durchlauf: x=0, y=48, breite=16, höhe=16

    1. Durchlauf der X-Schleife x=16, y=0, breite=16, höhe=16
    2. Durchlauf der X-Schleife x=16, y=16, breite=16, höhe=16
    3. Durchlauf der X-Schleife x=16, y=32, breite=16, höhe=16
    4. Durchlauf der X-Schleife x=16, y=48, breite=16, höhe=16

    usw. Somit gehste das Bild Kachel für Kachel durch.

    VB.NET-Quellcode

    1. Dim PicturePath As String
    2. Dim lPicture As Bitmap
    3. Dim TrennTrennPics(15) As Bitmap
    4. ' ... anderer Code
    5. ' Sub
    6. For x As Integer = 0 To 48 Step 16
    7. For y As Integer = 0 To 48 Step 16
    8. Static Anzahl As Integer = 0
    9. Dim rect As New Rectangle(y, x, 16, 16)
    10. TrennTrennPics(Anzahl) = New Bitmap(16, 16)
    11. Dim Gr As Graphics = Graphics.FromImage(TrennTrennPics(Anzahl))
    12. Gr.DrawImage(lPicture, 0, 0, rect, GraphicsUnit.Pixel)
    13. Anzahl += 1
    14. Next
    15. Next
    16. ' Sub End

    Habs nun so gelöst.

    Problem. Bei den einzelnen Bildern fehlt rechts und unten paar pixel, aber das bild hat die Proportzionen 16x16.
    Schein als ob paar Pixel rechts und unten fehlen aber das Bild dann wieder auf 16x16 vergößert wurde... Woran kann das liegen?

    Hier das Testbild das ich benutze.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „St0on“ ()