Die Qualität des Bildes in der Picturebox ist schlecht

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

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Bartosz.

    Die Qualität des Bildes in der Picturebox ist schlecht

    Hallo,
    ich habe ein png-Bild mit den Abmaßen 300 pixel × 300 pixel. Dieses sieht bei der Windows-Fotoanzeigt sehr gut aus. Lade ich das Bild aber in die PictureBox, sieht es schlecht aus. Ich habe den Eindruck, die PictureBox lädt in schlechter Qualität. Bei richtigen Fotos hatte ich nie Probleme. Die Abmaße der PictureBox sind auch 300 × 300. Wie kann ich das verbessern?
    Ich weiß nicht, ob es wichtig ist: Das Bild hat einen dunkelgraublauen Hintergrund. Im Vordergrund ist ein etwas hellerer Zylinder mit einem roten Deckel. Daher meine Annahme, dass hier etwas kaputtoptimiert wird.

    VB.NET-Quellcode

    1. Public NotInheritable Class Form_I_am_busy
    2. Private Sub Form_I_am_busy_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. If System.IO.File.Exists($"{Application.StartupPath}\Name.png") Then
    4. PictureBox1.Image = Image.FromFile($"{Application.StartupPath}\Name.png")
    5. End If
    6. End Sub
    7. Private Sub Form_I_am_busy_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
    8. If PictureBox1.Image IsNot Nothing Then PictureBox1.Image.Dispose()
    9. End Sub
    10. End Class


    VB.NET-Quellcode

    1. Using FIAB As New Form_I_am_busy()
    2. FIAB.Show(Me)
    3. Application.DoEvents()
    4. System.Threading.Thread.Sleep(4000)
    5. End Using
    Hi

    Hänge hier mal die PNG dran das man das mal nachvollziehen kann. Ansonsten könnte ich mir vorstellen das der GDI+ Decoder ein Problem mit dieser PNG hat. Ohne es genau zu wissen, könnte die Windows Photo Anzeige WIC zum laden der PNG verwenden und zum rendern Direct2D.
    Mfg -Franky-

    Bartosz schrieb:

    Bei jpeg sieht das Bild von Anfang an bescheiden aus.
    Hänge das Bild einfach mal an.
    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!
    @Bartosz
    Kann es vielleicht sein, dass Du in Windows eine Bildschirmskalierung eingestellt hast und die 300 Pixel Picturebox dann keine 300 Pixel mehr anzeigt/hat?
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
    @dive26 Nein, aber danke für den Tipp.

    Ich konnte mittlerweile mehrere Probleme sehen.
    1.) Ich habe die GUI auf dem Zweitbildschirm starten lassen. Er ist sehr von den Abmaßen her recht groß, hat aber nur 1920×1080 Pixel. Klar, dass alles verpixelt erscheint.
    2.) Es gibt dennoch ein Problem beim Zeichnen. Wenn man einen Zylinder zeichnet (richtig in 3D), mithilfe von Vektoren, und diesen rotiert und projiziert, dann ist das Ergebnis nicht mehr gut. Man muss ein größeres Bild zeichnen, als die PictureBox groß ist, oder in kleineren Schritten beim Zeichnen inkrementieren. Letzteres geht aber ab einem bestimmten Punkt nicht mehr, weil RAM voll. Also hab ich viel optimiert. Die hintere Seite wird gar nicht mehr gebaut, weil ich nur um die y-Achse drehe. So konnte ich wiederum etwas größer zeichnen.
    3.) Zurück zum Punkt: Ich glaub' es dennoch gern, dass der GDI+ Decoder manchmal nicht so gut ist. Wie dem auch sei. Hier ist fertig.