![]() |
Linie in Live-Kamerabild zeichnen
Hallo zusammen,
eine Frage, und zwar habe ich eine Kamera, die ein Livebild anzeigen soll. Nun möchte ich gerne eine Linie einzeichnen. Das Kamerabild kann ich mit einer Fremkomponente anzeigen lassen. Das Zeichnen mache ich mit folgender Funktion:
Delphi-Quellcode:
Leider wird das Kamerabild ja ständig erneuert, sodass meine Zeichnung ständig überschrieben wird.
procedure TForm1.Button2Click(Sender: TObject);
var hdc : Integer; begin hdc := GetDC(uEyeCam1.Handle); //Handle der Kamera rectangle(hdc, 10,10,20,40); releaseDC(uEyeCam1.Handle, hdc); end; Hat jemand eine Idee wie ich die Zeichnung vor das Kamerabild bekomme? oder sonst eine gute Anmerkung? Grüße |
AW: Linie in Live-Kamerabild zeichnen
Zitat:
Such nach dem passenden Event! Ich kenn die Komponente leider nicht. |
AW: Linie in Live-Kamerabild zeichnen
Oder zyklisch mit einen Timer, der schneller ist, als die Refresh-Rate der Kamera!
|
AW: Linie in Live-Kamerabild zeichnen
Ergibt natürlich einen schön blinkenden Text.
Es wurde natürlich das Wichtigste nicht verraten. Was für eine "Kamera" ist das denn? Also über was wird die angesprochen? Einige Schnittstellen nutzen intern Messages, bzw. einen Timer, und auf dessen Messages könnte man reagieren und direkt nach dessen Zeichenroutiene direkt neu drüber malen. |
AW: Linie in Live-Kamerabild zeichnen
Liste der Anhänge anzeigen (Anzahl: 1)
Das mit dem Timer hatte ich auch ausprobiert. Leider hat man dann ein flimmerndes Bild.
Die Kamera ist eine uEye-Cam vom Hersteller IDS in Deutschland mit GigE Verbindung. Wenn man sich in die Doku ein bißchen einließt, findet man dann auch Funktionen zum "Direct Rendering", die man mit der ActiveX-Komponente des Herstellers verwenden kann. Zuerst muss man das Direct 3D einschalten und dann kann man sog. Overlays über das Kamerabild zeichnen. Sieht dann so aus:
Delphi-Quellcode:
Wichtig ist das DirectX auf dem PC installiert ist.
uEyeCam1.EnableDirect3D := True;
resultInt := uEyeCam1.DRGetOverlayDC(hdc); rectangle(hdc, 10,10,200,100); resultInt := uEyeCam1.DRReleaseOverlayDC; resultInt := uEyeCam1.DRShowOverlay(1); Dann funktioniert das einwandfrei (nach 2h Beispielprogramme in C durchforsten :) Danke für die Hinweise. Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 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