Ist die API-Funktion "GetPixel" schneller als Canvas.Pixels?Unterschied zwischen GetPixel und Canvas.Pixels in Delphi
Antwort
Es sollte die gleiche sein:
function TCanvas.GetPixel(X, Y: Integer): TColor;
begin
RequiredState([csHandleValid]);
GetPixel := Windows.GetPixel(FHandle, X, Y);
end;
Wenn Sie nach etwas suchen, der besser abschneidet als GetPixel/Canvas.Pixel [] Sie Bitmap.ScanLine sollten überprüfen. Das einzige Problem ist, dass die Daten auf verschiedene Arten angeordnet werden können, bestimmt durch Bitmap.PixelFormat
Die GetPixel-Funktion ist sehr langsam! Wenn Sie eine hohe (oder sogar akzeptable) Leistung benötigen, sollten Sie die ScanLine-Eigenschaft verwenden. ScanLine [y] ist ein Zeiger auf die y-te Pixelzeile in der Bitmap, die in dem von der PixelFormat-Eigenschaft angegebenen Format codiert ist. Zum Beispiel für einen 24-Bit-Bitmap weist die Linie, die das Format
B1 B2 G1 R1 R2 G2 ... Gn Bn Rn
wenn die Breite des Bitmaps n ist. Bi, Gi und Ri sind die Blau-, Grün- und Rot-Intensitäten von Pixel bzw. als Bytes.
- 1. Was ist der Unterschied zwischen AsInteger und Value in Delphi?
- 2. Unterschied zwischen Delphi 2007 und 2010 beim Zeichnen auf Bitmaps
- 3. Unterschied zwischen `% in%` und `==`
- 4. Unterschied zwischen int * i und int * ich
- 5. Unterschied zwischen $ @ und $! in Perl
- 6. Unterschied zwischen '.' und "." in Java
- 7. Unterschied zwischen $ {} und $() in Bash
- 8. Unterschied zwischen und „-“ in r
- 9. Unterschied zwischen .. und ... in Ruby
- 10. Unterschied zwischen "" und "" in Python
- 11. Unterschied zwischen // und /// in C#
- 12. Unterschied zwischen. und #
- 13. MySQL: Unterschied zwischen ', `,' und '
- 14. C++ Unterschied zwischen '//' und '///'
- 15. Unterschied zwischen String.Empty und ""
- 16. Unterschied zwischen = und: =
- 17. getPixel von HTML Canvas?
- 18. Unterschied zwischen Vorzeichen & und *?
- 19. VBA: Unterschied zwischen & und +
- 20. Unterschied zwischen "**/* /" und "** /"?
- 21. Unterschied zwischen $ # und $ {# @}
- 22. Unterschied zwischen '#', '%' und '$'
- 23. Unterschied zwischen numpy.logical_and und &
- 24. Unterschied zwischen // und http: //
- 25. Was ist der Unterschied zwischen den Delphi-String-Vergleichsfunktionen?
- 26. Callback-Funktionalität zwischen Delphi DLL und Delphi EXE
- 27. Unterschied zwischen -Wconversion zwischen gcc und g ++
- 28. Gibt es einen Unterschied zwischen Array und gepackten Array in Delphi?
- 29. Was ist der Unterschied zwischen Indy 9 und Indy 10?
- 30. Delphi - Unterschiede zwischen CompareStr und CompareString
Darf ich fragen, was mit meinem Argument falsch ist? –
@Ritsaert: Bist du sicher? Ich habe gerade eine kleine BMP-Datei erstellt, die mit (R, G, B) = (0xFF, 0, 0) gefüllt war und sie im Speicher betrachtet. Siehe http://privat.rejbrand.se/hex.png. Das markierte Byte ist das erste Byte der ersten Scanzeile. Für mich sieht es sicher aus wie die Bytes gehen BBGGRRBBGGRR ... –
Ich schäme mich. Du hast Recht. Das Format für die 24-Bit-Bitmaps ist in BGR-Reihenfolge. –