StretchBlt



  • Hallo!

    Woran kann es liegen, dass StretchBlt so schlecht bilder verkleinert?

    bsp:
    original (1MB)
    www.maxis-house.de/orig.jpg

    und mittels StretchBlt:
    www.maxis-house.de/stretch.jpg

    Hat jemand einen guten Rat, wie man das verbessern kann?
    Es sieht umso schlimmer aus, je größer das OriginalBild ist
    Maxi



  • Das liegt an der Methode die StretchBlt benutzt. Es nimmt wahrscheinlich immer zwei Pixel und schmeißt das zu einem zusammen. Weil wie du sagst ist die Qualität bei kleineren Bildern besser. Das liegt dann wohl daran, dass es nicht so viele Pixel hat, als dass man daraus so eine schlechte Qualität erstellen könnte. Ein bessere Methode ist nur das selber schreiben (insofern man das beherrscht):D.

    Mfg Ominion



  • Statt StretchBlt würde ich DrawDibDraw (DrawDib-Api) empfehlen, ist einfacher zu handhaben.

    Farbbilder kann die GDI üblicherweise noch recht gut skalieren, s/w nur schlecht. Dein Bild seht aber eher nach Farbreduzierung und falscher Palette aus. Kann es sein, dass das Ausgabe-Device nur 256-Farben oder weniger darstellen kann?



  • Ich tippe auch drauf das einer oder beide DCs, die du bei StretchBlt() angibst ne falsche Palette haben (DCs nicht korrekt erzeugt evtl. ?)

    Deutlich bessere Bild-Qualität kann Microsofts GDI+.



  • sicher dass du SetStretchBltMode auf HALFTONE gesetzt hast?
    ansonsten sollte es bei sehr guter quali gehen...

    mfg chris90



  • Also an den DCs wirds sicherlich nicht liegen. Ich mach mit CreateCompatibleDC und CreateCompatibleBitmap eine Kopie des Original-Fenster-DCs. Da mal ich dann meine Bitmap rauf. Und dann blitte ich mit StretchBlt von dem Mem-DC auf den fensterDC

    Mit HALFTONE werd ich mal ausprobieren. Wenns nicht geht, muss ich es eben selbst schreiben.
    Eigentlich wollte ich die App aber auch für win98 laufen lassen, aber da geht ja HALTONE auch nicht... na ma sehn



  • jo, lag an HALFTONE, wenn ich HALFTONE setze, sieht alles gut aus


Anmelden zum Antworten