Bildqualität in picturebox schlechter als in Windows.

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    Bildqualität in picturebox schlechter als in Windows.

    Blöder Titel, ich weiß aber er trifft es.
    Ich binde ein jpg in eine Picturebox ein und es ist unschärfer und pixeliger als das selbe Bild im Standard-Bild Betrachter von Windows.
    Kann ich die darstellungsqualität verbessern?
    Man(n) kann auch ohne Hunde leben, aber es lohnt nicht (Heinz Rühmann)
    @Skino Hallo, bist du dir wirklich sicher, dass es nicht Bilder sind, deren Abmaße kleiner sind, als wie die PictureBox eingestellt ist? Dann hilft auch SizeMode.StretchImage nicht, weil – klar – dann wird das Bild größer gezogen, als wie es im Original ist.

    Mach dir eine Prozedur, die die PictureBox-Größe für jedes Bild anpasst. Dann hast du auch keine verzerrten* Bilder mehr.

    *ich meine hiermit eine unproportionale Vergrößerung zu einer Seite.

    VB.NET-Quellcode

    1. If current_width > max_possible_width OrElse current_height > max_possible_height Then
    2. PictureBox1.Image = sorted_List(Index).Bild
    3. PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
    4. PictureBox1.Size = If(CInt(Math.Round(current_width * max_possible_height / current_height, 0)) > max_possible_width,
    5. New Size(max_possible_width, CInt(Math.Round(current_height * max_possible_width / current_width, 0))),
    6. New Size(CInt(Math.Round(current_width * max_possible_height / current_height, 0)), max_possible_height))
    7. Else
    8. PictureBox1.Image = sorted_List(Index).Bild
    9. PictureBox1.SizeMode = PictureBoxSizeMode.Normal
    10. PictureBox1.Size = New Size(current_width, current_height)
    11. End If

    mit
    • sorted_List als klassenweite List(of Bitmap)
    • current_width = DeinBitmap.Size.Width
    • current_height = DeinBitmap.Size.Height
    und

    VB.NET-Quellcode

    1. ''' <summary>
    2. ''' Breite der PictureBox (NICHT der Form!)
    3. ''' </summary>
    4. ''' <returns></returns>
    5. Private ReadOnly Property max_possible_width As Integer = 1767
    6. ''' <summary>
    7. ''' Höhe der PictureBox (NICHT der Form!)
    8. ''' </summary>
    9. ''' <returns></returns>
    10. Private ReadOnly Property max_possible_height As Integer = 1001
    11. ''' <summary>
    12. ''' Breite des aktuellen Bildes.
    13. ''' </summary>
    14. ''' <returns></returns>
    15. Private Property current_width As Integer
    16. ''' <summary>
    17. ''' Höhe des aktuellen Bildes.
    18. ''' </summary>
    19. ''' <returns></returns>
    20. Private Property current_height As Integer
    21. ''' <summary>
    22. ''' Laufindex („Wo sind wir gerade in der Bilder-Liste?“)
    23. ''' </summary>
    24. ''' <returns></returns>
    25. Private Property Index As Integer

    @Skino Mit welchem Code weist Du das Bild der PictureBox zu?
    Welchen SizeMode hat Deine PictureBox?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich lade das Bild direkt in der IDE aud den Ressourcen in die Picturebox. Es ist unveränderlich. Wird also nicht zur Laufzeit geändert und in irgend einer Form gezoomt oder gestretcht wird es auch nicht.
    SizeMode ist Centerimage.

    Das ist das Bild, eine Linearskala für einen Kompass



    Edit: Habe das Bild direkt von der Platte eingelesen und nicht aus den Ressourcen und da ist die Qualität einwandfrei. Eventuell wird es beim Importieren in die Ressourcen irgendwie komprimiert oder so *grübel
    Man(n) kann auch ohne Hunde leben, aber es lohnt nicht (Heinz Rühmann)

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

    Ja. Ursprünglich hatte ich es über den kleinen Pfeil links oben an der Picturebox geladen über importieren.
    Aber wie gesagt, hat sich jetzt ja erledigt.
    Man(n) kann auch ohne Hunde leben, aber es lohnt nicht (Heinz Rühmann)