AGB  ·  Datenschutz  ·  Impressum  







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

Inhalt von Window vergroessern?

Ein Thema von alcaeus · begonnen am 8. Mär 2005 · letzter Beitrag vom 11. Mär 2005
Antwort Antwort
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#1

Inhalt von Window vergroessern?

  Alt 8. Mär 2005, 19:53
Hallo allerseits,

ich habe den Code aus diesem Beitrag (Link) etwas bearbeitet, um den Output meiner TV-Karte auszugeben. Dies funktioniert auch, allerdings mit einem kleinen Problem: Die TV-Karte gibt mir das Bild in 640x480 Pixel zurueck, ich wuerde es aber gern im Fullscreen-Mode ausgeben. Zum vergroessern eines Bildausschnitts habe ich mir diesen Code (Link) rausgesucht und entsprechend bearbeitet. So sieht das Ganze nun aus:

Delphi-Quellcode:
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;
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

Kann mir irgendwer helfen?

Thanx and Greetz
alcaeus

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#2

Re: Inhalt von Window vergroessern?

  Alt 8. Mär 2005, 20:10
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.
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#3

Re: Inhalt von Window vergroessern?

  Alt 8. Mär 2005, 20:13
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
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: Inhalt von Window vergroessern?

  Alt 9. Mär 2005, 20:45
^^ push ^^
Hat denn keiner einen Rat fuer mich?

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#5

Re: Inhalt von Window vergroessern?

  Alt 9. Mär 2005, 20:58
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.
DsPack ist eine ganz brauchbare Kapselung dafür und sollte sogar eine Demo für TV Capturing mitliefern.
Mit einer Pinnacle Karte kannst du aber gegen die Wand rennne, da die, glaube ich zumindest , keinen DirectShow Filter mitliefern.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#6

Re: Inhalt von Window vergroessern?

  Alt 9. Mär 2005, 21:03
Zitat von Robert_G:
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.
Nette Ausdrucksweise

Zitat von Robert_G:
Für solche Spielereien war Microsoft zu nett und hat DirectShow erfunden.
DsPack ist eine ganz brauchbare Kapselung dafür und sollte sogar eine Demo für TV Capturing mitliefern.
Ja, und ich hab mir das DSPack auch angesehen, allerdings hatte ich noch nicht Zeit durch die Sourcen zu gehn. Das TV-Capturing-Beispiel ist aber sehr viel speicheraufwaendiger als meine Variante, und das ist mit ein Grund warum ich auf das Pinnacle Media Center verzichten will.

Zitat von Robert_G:
Mit einer Pinnacle Karte kannst du aber gegen die Wand rennne, da die, glaube ich zumindest , keinen DirectShow Filter mitliefern.
Ich hab (wieder mal) keine Ahnung wovon du sprichst, aber mit den Windows Capturing Methoden bekomme ich wenigstens "Schneefall" auf meinen Bildschirm. Ich werde mich aber mal am Wochenende wieder damit auseinandersetzen, falls ich Zeit dafuer finde...

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#7

Re: Inhalt von Window vergroessern?

  Alt 11. Mär 2005, 21:00
^^ 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
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Inhalt von Window vergroessern?

  Alt 11. Mär 2005, 21:29
Moin Andreas,

ich hab' s jetzt nicht ausprobiert, vermute aber mal, dass es daran liegt, dass Du Overlay aktiviert hast.

Code:
SendMessage(camhandle, WM_CAP_SET_OVERLAY, [color=red][b]1[/b][/color], 0);
Schalt' dass doch mal ab.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#9

Re: Inhalt von Window vergroessern?

  Alt 11. Mär 2005, 21:39
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
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  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 03:13 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