AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verständnisfrage: TImage

Ein Thema von SearchBot · begonnen am 9. Sep 2012 · letzter Beitrag vom 17. Sep 2012
Antwort Antwort
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#1

AW: Verständnisfrage: TImage

  Alt 16. Sep 2012, 22:36
Zusatz: Man könnte natürlich auch ein wenig freaky werden, sich den Pointer auf die Rohdaten abholen (Scanline), und da mit ZeroMemory() oder FillChar() rumfuchteln. Könnte sogar noch einen Happs flotter sein, man muss dabei nur aufpassen wie rum das Bitmap im Speicher liegt. (Normal ist Bottom-Up, also quasi falsch rum. Muss es aber nicht, und Windows entscheidet recht eigenmächtig wann das so ist )
So arg viel schneller sollte man damit aber im Mittel auch nicht werden, aaaber es würde wohl gehen und auch sehr schlank sein

Edit: Noch ein sehr schneller Weg: Eine Bitmap mit dem "Leerbild" vorhalten, und zum leeren dieses mit BitBlt() kopieren. Könnte sogar noch besser sein als das obige! (Zumindest etwas weniger "hacky")
"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)

Geändert von Medium (16. Sep 2012 um 22:38 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.555 Beiträge
 
Delphi 12 Athens
 
#2

AW: Verständnisfrage: TImage

  Alt 17. Sep 2012, 02:01
Was mag wohl theoretisch schneller sein?

- etwas zu kopieren/abzumalen (viele Bytes von hier nach da kopieren)
- oder einen Eimer voll Farbe drüberzukippen (nur einen kleinen Wert laden und damit alles füllen)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Verständnisfrage: TImage

  Alt 17. Sep 2012, 08:40
Der Vorteil dürfte hier aus BitBlt resultieren, da dieser imho große Blöcke am Stück bewegt, während ZeroMemory und FillChar letztlich eine Schleife über Bytes macht. Allerdings kennen ich die Interna von BitBlt zu wenig, man müsste es also mal testen. (Früher war sowas ja über den "Blitter" quasi Hardware-beschleunigt, es käme also darauf an, ob bei BitBlt ebenfalls ähnliche Dinge hinter stecken, oder auch das am Ende nur eine Read-Write-Loop auf Bytes ist.)
"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
Antwort Antwort


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 19:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz