Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Subpixel/Alignmentfehler von StretchBlt? (https://www.delphipraxis.net/157657-subpixel-alignmentfehler-von-stretchblt.html)

hboy 19. Jan 2011 23:52


Subpixel/Alignmentfehler von StretchBlt?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Seit ich halftoning bei StretchBlt für mich entdeckt habe, beschäftigt mich das im angehängten Bild gezeigte verhalten. Beim Hochskalieren (hier 600%) neigt die Funktion dazu, sich leicht zu vertun, was dazu führt, dass die Ausgabe nicht am grün dargestellten Zielrechteck (darübergezeichnet zum debugging) endet sondern etwas davor aussetzt. Dennoch werden dann schwarze Linien oder Rahmen gezeichnet. Dies tritt bei allen Bildgrößen mehr oder weniger unberechenbar auf, bei manchen Zoomstufen funktioniert die Routine hingegen wieder akzeptabel.

Bei sehr großen Zoomstufen scheint StretchBlt der Meinung zu sein, dass die Pixelung wohl so gewollt sei und die Interpolation wird abgeschaltet. Das führt dazu, dass - je nach Detailgrad des Bildes - mit ODER ohne Glättung gezeichnet wird.

Delphi-Quellcode:
        CreateHalftonePalette(buffer.Canvas.Handle);
        SetStretchBltMode(buffer.canvas.Handle, STRETCH_HALFTONE);
        SetBrushOrgEx(buffer.Canvas.Handle,0,0,nil); // avoid brush misalignment
mit
Delphi-Quellcode:
GetStretchBltMode(dest.Canvas.Handle) = STRETCH_HALFTONE
überprüfe ich vor dem Zeichnen nochmals, ob alles geklappt hat, aber der Zeichenmodus ist mehr oder weniger willkürlich nicht korrekt.

Habe ich etwas übersehen? Danke schonmal für die Hilfe!



ps. http://connect.microsoft.com/VisualS...ails-smoothing Mist!
pps. http://support.microsoft.com/kb/269585/en-us?fr=1 na danke. Okay, als nächstes werde ich wohl versuchen, das Bild in Kacheln zu segmentieren und stückweise zu rendern. Qualität aus dem Hause Microsoft sei dank.

Memnarch 20. Jan 2011 00:30

AW: Subpixel/Alignmentfehler von StretchBlt?
 
Ein Ähnliches problem habe ich bei der GDI+. Wenn ich per GDPGraphics zeichne und interpolationmode gesetzt habe, kann es dazu kommen, das es am unteren rand/rechten rand 1-2 leere pixelreien gibt. Das passiert bei mir, wenn ich ein 4:3 BIld auf 16:10 Stretche. Von 16:9 -> 16:10 scheint alles in ordnung. Vielleicht vertuts sich beim seitenverhältniss?

Leider kann ich dazu nichts sagen. Für meinen Screensaver habe ich beschlossen ne Offsetfunktion einzubauen, die es dem User erlauben wird da sganze anzupassen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz