PictureBox vergrößert scharf anzeigen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Marvin0509.

    PictureBox vergrößert scharf anzeigen

    Ich habe ein sehr kleines Bild (8x8 Pixel) und würde das gerne in einer PictureBox vergrößert darstellen. Dabei sollen die Pixel einfach "in die Länge gezogen" werden. Das habe ich mit

    VB.NET-Quellcode

    1. Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage

    probiert, aber dabei sind die Pixel unscharf geworden und die Farben sind ineinander übergelaufen. Wie kann ich es machen, dass die Pixel einfach nur vergrößert werden ohne irgendwie zu verschwimmen?
    afaik geht das standartmäßig nicht.
    Du könntest aber ein eigenes Control schreiben:

    Klasse "myPicturebox" erstellen und von Picturebox erben lassen. Dann den OnPaint-Sub überschreiben und je nach SizeMode das .Image verschieden zeichnen. Du musst also Ahnung von GDI haben. Wichtig ist graphics.InterpolationMode auf NearstNeighbour zu stellen, das sorgt dafür, dass die Kanten hart dargestellt werden und keine unscharfe darstellung erfolgt.

    lg


    Edit: geht doch viel einfacher:

    VB.NET-Quellcode

    1. Public Class MyPicturebox
    2. Inherits PictureBox
    3. Protected Overrides Sub OnPaint(pe As System.Windows.Forms.PaintEventArgs)
    4. pe.Graphics.InterpolationMode = Drawing2D.InterpolationMode.NearestNeighbor
    5. MyBase.OnPaint(pe)
    6. End Sub
    7. End Class


    lg

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