Interpolation bei Panel/Picturebox deatktivieren

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von APPIX.

    Interpolation bei Panel/Picturebox deatktivieren

    Hi hab mal wieder ne Frage:

    Ich habe eine Textur, die in eine Picturebox bzw. in das BackgroundImage eines Panels geladen wird.
    Die Ursprungstextur ist nur 16x16 Pixel groß, die Zielgrafik aber 32x32 bzw. 64x64 Pixel.

    Nun interpoliert VB.NET das Bild, sodass das ganze zwar "weicher" aussieht, das will ich aber gar nicht.
    Ich habe die Grafik extra so gestaltet, dass sie pixelig aussieht.

    Nun zu meiner Frage: Wie deaktiviere ich das Interpolieren bei Bildern (Image/Bitmap Objekt) in VB.NET?

    Falls es weiterhilft:
    Hier noch ein Teil des Codes:

    VB.NET-Quellcode

    1. Dim maxX As Integer = 16
    2. Dim texX As Integer = TileTextureId
    3. Dim texY As Integer = 0
    4. While texX >= maxX
    5. texY += 1
    6. texX -= maxX
    7. End While
    8. Dim TextureRectangle As New Rectangle(texX * 16, texY * 16, 16, 16)
    9. Dim TileRectangle As New Rectangle(0, 0, 32, 32)
    10. Dim image As New Bitmap(32, 32)
    11. image = System.Drawing.Image.FromFile(Form1.TexturePackPath)
    12. Dim newImage As New Bitmap(32, 32)
    13. Dim a As Graphics = Graphics.FromImage(newImage)
    14. a.DrawImage(image, TileRectangle, TextureRectangle, GraphicsUnit.Pixel)
    15. a.Dispose()
    16. Me.BackgroundImage = newImage
    17. Me.BackColor = Color.CornflowerBlue
    Mi Vorsicht zu genießen, da es da einen kleinen Bug zu geben scheint. Lies dir einfach diesen Thread mal durch, dort habe ich die Lösung gepostet: [VB 2010] Bild vergrößern klappt nicht richtig

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    Gut danke euch beiden.
    Funktioniert jetzt super ;)

    Für alle, die wissen wollen, wie:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim maxX As Integer = 16
    2. Dim texX As Integer = TileTextureId
    3. Dim texY As Integer = 0
    4. While texX >= maxX
    5. texY += 1
    6. texX -= maxX
    7. End While
    8. Dim TextureRectangle As New Rectangle(texX * 16, texY * 16, 16, 16)
    9. Dim TileRectangle As New Rectangle(0, 0, 32, 32)
    10. Dim image As New Bitmap(32, 32)
    11. image = System.Drawing.Image.FromFile(Form1.TexturePackPath)
    12. Dim newImage As New Bitmap(32, 32)
    13. Dim a As Graphics = Graphics.FromImage(newImage)
    14. a.InterpolationMode = Drawing2D.InterpolationMode.NearestNeighbor
    15. a.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
    16. a.DrawImage(image, TileRectangle, TextureRectangle, GraphicsUnit.Pixel)
    17. a.Dispose()
    18. Me.BackgroundImage = newImage
    19. Me.BackColor = Color.CornflowerBlue