Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi bmp's schnell zeichen! (https://www.delphipraxis.net/124534-bmps-schnell-zeichen.html)

xy124 20. Nov 2008 15:34


bmp's schnell zeichen!
 
Hallo Leute! :cat:

Wie kann ich bitmaps auf mein Formular möglichst schnell & CPU-schonend Zeichnen?

Ich lade mit dem HIER geposteten Code meinen aktuellen Webcamframe ins bmp Format und werte diese dann mittels Scanline aus.
^^das funktioniert auch, nur dass es halt ein wenig ruckelt, deswegen dachte ich an Andorra um Hardwarebeschleunigt oder wie das heißt zu arbeiten.

Wie ich gesehen habe hat Andorra auch eine eigene Scanline-function - ist die schneller als die von einem normalem Bitmap?

aber viel stärker interessiert mich, wie ich eine TBitmap möglichst zeitnah auf mein addraw bekomme!

hoffe ihr könnt mir helfen! :mrgreen:


-xy124-

Cyf 20. Nov 2008 16:56

Re: bmp's schnell zeichen!
 
Wenn du mit der VCL arbeiten willst, wäre es am einfachsten, auf ein vom angezeigten Bild seperates TBitmap zu zeichnen und das dann der Bitmap Eigenschaft (eines TImage, oder wie magst) zuzuweisen. So sollte es eigentlich nicht ruckeln, hängt aber unter Umständen von deiner Bildgröße ab.

[EDIT]Habe grade mal den Link gelesen, in dem Fall musst du das ganze natürlich auch nicht erst als BMP speichern, dadurch sollte eher das Problem entstehen, wenn die Daten ohnehin schon als TBitmap vorliegen.

Lossy eX 21. Nov 2008 10:07

Re: bmp's schnell zeichen!
 
Also meiner Meinung nach ist das Zeichnen eines Bitmaps wohl eher kein Problem. Selbst, wenn man Bitmaps benutzt die rein in Software gezeichnet werden, sollten locker über 60 Bilder pro Sekunde möglich sein. Da auf eine hardwarebeschleunigte Bibliothek wie Andora (oder auch direkt OpenGL/DirectX) zu setzen wird vermutlich nicht viel bringen. Denn bei diese APIs muss das Bild immer erst noch mal seperat zur Grafikkarte geladen werden was auch wiederrum Zeit in Anspruch nimmt.

Von daher würde mich mehr interessieren wie der Rest deines Codes aussieht? Besonders was du mit Scanlines dort anstellst? Auch würde ich mal schauen ob es nicht evtl einen besseren Weg gibt an die Bilder zu kommen außer über die Zwischenablage. Könnte mir auch gut vorstellen, dass das mitunter mehr Zeit benötigt als notwendig wäre. Ich kenne mich mit Capturing nicht mehr so gut aus. Liegt schon ein paar Jahre zurück. Aber könnte mir gut vorstellen, dass es dort so eine Art Callback geben wird. Also, dass man von außen eine Methode übergeben kann die dann pro Frame aufgerufen wird und die Bilddaten übergeben bekommt. Das würde auch nur dann passieren, wenn tatsächlich ein neues Frame existiert. Mit dem explizieten Abholen von Bildern kannst du nämlich nicht feststellen ob du wirklich alle Bilder bekommst oder ob du nicht evtl. Bilder doppelt holst.

xy124 22. Nov 2008 17:21

Re: bmp's schnell zeichen!
 
also erstmal viiiiiiiiiiiiiiiiiiiiiiiielen Dank für eure Antworten.
Ihr konntet mich jetzt davon überzeugen, dass es nichts bringt alles auf andorra umzustellen *puh* 8)

trotzdem hab ich noch eine Frage in der es um Geschwindigkeit geht.
Ist das(http://delphiportal.de/362-eine-bitm...tikal-spiegeln) wirklich die schnellste Möglichkeit ein bitmap zu spiegeln?

ich hab' leider in msdn auch nix gefunden um das Webcambild gleich gespiegelt auszugeben, obwohl man das bei meiner Webcam in der Treibersetup einstellen kann.

wäre echt super wenn einer von euch Delphiprofis helfen kann :)

alzaimar 22. Nov 2008 17:24

Re: bmp's schnell zeichen!
 
Such mal nach der Bibliothek 'Graphics32' (oder Graphic32?), das ist eine mächtig gimpte Bitmap-Komponente, die die Grundfunktionen (Spiegeln, Drehen etc.) in atemberaubender Geschwindigkeit umsetzt. Umd umsonst ist es auch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:21 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