![]() |
Inhalt von Window vergroessern?
Hallo allerseits,
ich habe den Code aus diesem Beitrag ( ![]() ![]()
Delphi-Quellcode:
Camhandle ist eine Datei vom Typ HWND, und das Handle wird auf einem unsichtbaren Panel abgelegt. Wenn ich nun auf ersten Button klicke, wird alles erfolgreich gestartet, aber ein Klick auf den naechsten Button zeichnet nichts (es sollte auf dem Canvas des Forms gezeichnet werden). Hab ich irgendwo in meinem Code einen Fehler oder funktioniert das nicht wenn das Window unsichtbar ist? Ich kann dies im Moment nicht testen, da die TV-Karte immer nur am Wochenende zur Verfuegung steht :-?
procedure TForm1.Button3Click(Sender: TObject);
begin camhandle := capCreateCaptureWindow('TV',WS_CHILD+WS_VISIBLE, 0, 0, Panel1.Width, Panel1.Height, Panel1.Handle, 0); //Wie du siehst, brauchst du ein Panel in diesem Beispiel ;-) SendMessage(camhandle, WM_CAP_DRIVER_CONNECT, DrvList[ComboBox1.ItemIndex], 0); SendMessage(camhandle, WM_CAP_SET_PREVIEWRATE, 30, 0); sendMessage(camhandle, WM_CAP_SET_OVERLAY, 1, 0); SendMessage(camhandle, WM_CAP_SET_PREVIEW, 1, 0); end; procedure TForm1.Button3Click(Sender: TObject); var C: TCanvas; begin C := TCanvas.Create; try C.Handle := GetWindowDC(camhandle); try Image1.Picture.Bitmap.PixelFormat := pfDevice; Image1.Picture.Bitmap.Canvas.CopyMode := SRCCOPY; StretchBlt(Image1.Picture.Bitmap.Canvas.Handle, 0, 0, Pred(Image1.Width), Pred( Image1.Height), C.Handle, Screen.DesktopLeft, Screen.DesktopTop, Pred(Panel1.Width), Pred(Panel1.Height), Image1.Picture.Bitmap.Canvas.CopyMode); finally ReleaseDC(camhandle, Canvas.Handle); end; finally C.Free; end; end; Kann mir irgendwer helfen? Thanx and Greetz alcaeus Greetz alcaeus |
Re: Inhalt von Window vergroessern?
also ich weiß, dass das bild nicht größer werden kann als 640.. oder 800.. also bei wintv wars so dass er bei fullscreen die auflösung des monitors runtergeschraubt hat.
|
Re: Inhalt von Window vergroessern?
Hallo phlux,
nein, Pinnacle macht dies definitiv nicht. Ausserdem sollte der Code ja funktionieren, schliesslich hole ich mir ja nur den DC des Windows, erstelle einen Canvas der als Handle den Handle dieses DC hat, und kopiere den Inhalt mit StretchBlt auf das Form. Mache ich dies fuer Windows-Handle 0 (=Desktop) funktioniert alles bestens, gehe ich aber auf das Handle, welches ich vorher erhalten habe, sehe ich nichts, und ich hab keine Ahnung warum... Greetz alcaeus |
Re: Inhalt von Window vergroessern?
^^ push ^^
Hat denn keiner einen Rat fuer mich? :cry: Greetz alcaeus |
Re: Inhalt von Window vergroessern?
Das sieht für mich danach aus, als versuchst du über ein Handle auf eien Faust ein Handle auf einen Nagel in eine Wand zu kloppen.
Für solche Spielereien war Microsoft zu nett und hat DirectShow erfunden. ;) ![]() Mit einer Pinnacle Karte kannst du aber gegen die Wand rennne, da die, glaube ich zumindest :gruebel: , keinen DirectShow Filter mitliefern. :? |
Re: Inhalt von Window vergroessern?
Zitat:
Zitat:
Zitat:
Greetz alcaeus |
Re: Inhalt von Window vergroessern?
^^ Push ^^
Ich weigere mich aufzugeben. Ich habs jetzt nochmal probiert: wenn das Panel mit dem Window sichtbar ist, dann geht das mit StretchBlt genau ein mal, danach nicht mehr. Ist das Fenster hingegen unsichtbar, geht nichts. Gibts denn keine Moeglichkeit, den Inhalt groesser zu machen? Greetz alcaeus |
Re: Inhalt von Window vergroessern?
Moin Andreas,
ich hab' s jetzt nicht ausprobiert, vermute aber mal, dass es daran liegt, dass Du Overlay aktiviert hast.
Code:
Schalt' dass doch mal ab.
SendMessage(camhandle, WM_CAP_SET_OVERLAY, [color=red][b]1[/b][/color], 0);
|
Re: Inhalt von Window vergroessern?
Hallo Christian,
danke fuer den Tipp, aber es hat leider nicht geholfen :( Ist es moeglich mit DelphiX oder DirectX bessere Ergebnisse zu erzielen? Wenn das geht dann muehe ich mich naemlich nicht laenger mit den dummer Funktionen hier ab... Greetz alcaeus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 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