Frage

So habe ich gelesen, dass StretchBlt Bilder horizontal und / oder vertikal durch Negieren des nWidthSrc / Dest und nHeightSrc / Dest Parameter spiegeln kann. Ich möchte diese Funktionalität ohne die Performance-Overhead eines StretchBlt. Ich habe versucht, die gleiche Technik mit BitBlt, aber es hat nicht funktioniert.

Gibt es eine Möglichkeit, ein Bild mit etwas so einfachen wie BitBlt, zu spiegeln, ohne die Overkill eines StretchBlt? Oder wird StretchBlt nicht auf die Leistung auswirken, wenn die Quell- und Zielgrößen gleich sind?

War es hilfreich?

Lösung

BitBlt nur mathmatic Operationen (oder, xor, usw.) auf den einzelnen Pixeln in Frage durchführt, wird es nicht das Bild in irgendeiner Weise ändern. Das ist genau das, was StretchBlt ist für und StretchBlt (im Vergleich zu allen anderen Grafiken Ändern der Größe Betriebes) ist irrsinnig schnell wie in den meisten Fällen die Grafikkarte verwenden kann, um seine Leistung zu beschleunigen.

Andere Tipps

Alle Win32-Funktionen sind wahrscheinlich extrem optimiert werden.

Was macht denken Sie StretchBlt wird eine große Leistung getroffen werden?

Haben Sie profilieren Ihre Anwendung mit StretchBlt?

Sie könnten sich alle der Bitmap-Daten umkehren und sehen, ob Sie besser machen können, dass StretchBlt.

Hier ist ein Link, die Ihnen helfen können:

http://www.codeguru.com/cpp /gm/bitmap/specialeffects/article.php/c1739

Um ein Bild spiegeln Sie nur Schleife müssen durch die Pixel in umgekehrter Reihenfolge. Wie wenn man Sie horizontal nur spiegeln möchten müssen folgendes tun:

  1. Erweitern Bild Leinwand auf die doppelte Größe
  2. am unteren Rande des Bildes beginnen und bis Sie Weg, um die Pixel in auf den gespiegelten Bereich von oben nach unten geschrieben werden.
  3. Sie Schritt 3 von links nach rechts.

Ich weiß nicht, welche Sprache Sie verwenden, aber die meisten von ihnen können Sie die Pixel oder Bits auf individueller Basis manipuliert GDI verwendet wird.

No way Sie effizienter sein werden, dass StretchBlt, es sei denn, Sie einige zusätzliche Informationen über das Bild wissen (zum Beispiel gibt es eine Grenze ist, damit Sie nicht bestimmte Pixel kippen müssen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top