AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Alternative zu StretchBlt gesucht

Alternative zu StretchBlt gesucht

Ein Thema von Harry Stahl · begonnen am 5. Dez 2014 · letzter Beitrag vom 8. Dez 2014
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.362 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: Alternative zu StretchBlt gesucht

  Alt 7. Dez 2014, 23:27
Ja, liegt daran. Der Nearest-Resampler hat aber eine nicht akzeptable Qualität. Der Linear-Resampler ist so gut wie StretchBlt, aber eben deutlich langsamer.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#12

AW: Alternative zu StretchBlt gesucht

  Alt 7. Dez 2014, 23:54
Es liegt vermutlich eher am Hin- und Herkonvertieren zwischen TBitmap und TBitmap32. Graphics32 ist eigentlich extrem flott, kann mir nicht vorstellen, dass die WinAPI da wesentlich schneller ist. Nach meinen Erfahrungen ist es meistens eher umgekehrt.
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.362 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Alternative zu StretchBlt gesucht

  Alt 8. Dez 2014, 00:10
Beim Zeitmessen hab ich natürlich auch mal nur den Draw-Aufruf der Graphics32 gemessen und mit StretchBlt verglichen (32-Bit-Bitmap mit teiltransparentem Inhalt). Da war nur der Aufruf mit der schlechten Qualität besser, mit der mittleren war schon StretchBlt schneller.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.674 Beiträge
 
Delphi 2007 Enterprise
 
#14

AW: Alternative zu StretchBlt gesucht

  Alt 8. Dez 2014, 10:09
Das ist in der Tat seltsam, bisher kenne ich die GR32 auch eher als super-turbo im Direktvergleich mit den GDI Operationen. Was natürlich insgesamt sehr sparen kann, wäre die Verwendung von nur GR32 programmweit, so dass das Umkopieren weg fällt. Bei schon bestehenden größeren Werken natürlich keine Option.
Du kannst aber durchaus direkt ein TBitmap32 auf einen GDI Canvas zeichnen: TBitmap32.DrawTo() - Damit ließe sich, wenn es nur um die Anzeige geht, ein Mal kopieren schon sparen.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#15

AW: Alternative zu StretchBlt gesucht

  Alt 8. Dez 2014, 12:44
Bei schon bestehenden größeren Werken natürlich keine Option.
Gerade diese Einstellung verhindert sinnvolles Refactoring und das Weiterleben von legacy Anwendungen . *Natürlich* ist es eine Option, die bewertet werden muss.
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.362 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Alternative zu StretchBlt gesucht

  Alt 8. Dez 2014, 19:31
Hab noch mal ein wenig weiter getestet:

3548 x 2558 Pixel-Grafik, Shrink auf ca. 1/8-Größe:

TLinear: 266 MS
TKernel: 140 MS
TDraft: 30 MS
TNearest: 0 MS

"Draft" ist übrigens von der Qualität besser als der Name vermuten lässt.

In der Summe "wäre" die Sache mit "Draft" sogar noch ein wenig schneller als Stretchblt, jedenfalls wenn die Reduzierung auf ca. 25% oder kleiner erfolgt. Bei Vergrößerungen ist Stretchblt in allen Fällen schneller. Da ich an anderen Stellen aber auch noch mit StretchBlt zeichne (z.T. in Regions des gleichen Bilds) unterscheiden sich die Renderergebnisse ganz leicht. Man muss schon genau hinsehen, aber es fällt eben doch auf. Wenn ich auch in den Regions mit TBitmap32 zeichne, wird es leicht langsamer.

Da ich vorerst hier nichts umstellen möchte (Programmcode immerhin über 500.000 Zeilen), passt eine nur teilweise Zeichnung mit Graphics32 nicht so richtig ins Konzept.

Die erwähnte Option "alle Stellen" im Programm auf TBitmap32 umzustellen, wäre eine Überlegung für das nächste große Update, momentan versuche ich mich noch an kleineren Optimierungen.

Generell macht die Graphics32 einen guten Eindruck.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#17

AW: Alternative zu StretchBlt gesucht

  Alt 8. Dez 2014, 22:23
DrawImageRectRectI

gruss
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf