![]() |
Stretch bei Panel?
Hi,
gibt es eine Möglichkeit stretch bei einem Panel zu benutzen? Ich das ganze soll dann so wie bei einem Image funktionieren. Mfg MrScholz |
Re: Stretch bei Panel?
Für was sollte das denn gut sein? :) Das Panelskin wird ja immer der aktuellen Grösse angepasst, da bracuhst du doch kein stretch :)
|
Re: Stretch bei Panel?
Also ich möchte das bild meine WebCam auf dem panel darstellen das funktioniert auch ganz gut aber hat nicht in der größe vom panel.
Deswegen stretch! Mfg MrScholz |
Re: Stretch bei Panel?
Wie wäre es mit einem TImage auf dem Panel zum Anzeigen?
|
Re: Stretch bei Panel?
Hallo,
ich hab mal ein Test-Programm ausgegramt und hab das mit dem Panel so gemacht:
Code:
const
WM_CAP_DRIVER_CONNECT = WM_USER + 10; WM_CAP_EDIT_COPY = WM_USER + 30; WM_CAP_SET_PREVIEW = WM_USER + 50; WM_CAP_SET_OVERLAY = WM_USER + 51; WM_CAP_SET_PREVIEWRATE = WM_USER + 52; function capCreateCaptureWindow(lpszWindowName: LPCSTR; dwStyle: DWORD; x, y, nWidth, nHeight: integer; hwndParent: HWND; nID: integer): HWND; stdcall; external 'AVICAP32.DLL' name 'capCreateCaptureWindowA'; procedure TForm1.Button1Click(Sender: TObject); var handle:THandle; Video_Width, Video_Height: Integer; begin Video_Width := 320; Video_Height := 240; Panel1.Width := Video_Width; Panel1.Height := Video_Height; handle := capCreateCaptureWindow('Video',ws_child + ws_visible, 0, 0, Video_Width, Video_Height, Panel1.Handle, 1); SendMessage(handle, WM_CAP_DRIVER_CONNECT, 0, 0); SendMessage(handle, WM_CAP_SET_PREVIEWRATE, 30, 0); sendMessage(handle, WM_CAP_SET_OVERLAY, 1, 0); SendMessage(handle, wm_cap_set_preview, 1, 0); end; |
Re: Stretch bei Panel?
@ Helmi Danke aber diese Variante stretcht das Bild der WebCam ja nicht wirklich sie stretcht eher das panel...
Das ganze soll so wie ein TImage funktionieren aber da ein Image kein Handel hat muss ich das auf dem Panel machen aber beim panel gibt es kein Panel1.stretch. :wall: Mfg MrScholz Edit: @ Lukie ich wie soll das gehen? |
Re: Stretch bei Panel?
In dem du ein TImage auf das Panel packst.
Bist du sicher, dass du ein Handle brauchts und keinen Devicecontext? Für Zeichenoperationen wird meistens ein DC benötigt, selten ein Handle. |
Re: Stretch bei Panel?
aber du musst doch herausfinden können, wie groß das Video ist.
Und dann setzt einfach das panel auf die Größe des Videos (vielleicht noch überall + 1 Pixel,dann schauts besser aus) |
Re: Stretch bei Panel?
Ich benutze die funktion
Delphi-Quellcode:
Und da muss ich
const
WM_CAP_DRIVER_CONNECT = WM_USER + 10; WM_CAP_EDIT_COPY = WM_USER + 30; WM_CAP_SET_PREVIEW = WM_USER + 50; WM_CAP_SET_OVERLAY = WM_USER + 51; WM_CAP_SET_PREVIEWRATE = WM_USER + 52; function capCreateCaptureWindow(lpszWindowName: LPCSTR; dwStyle: DWORD; x, y, nWidth, nHeight: integer; hwndParent: HWND; nID: integer): HWND; stdcall; external 'AVICAP32.DLL' name 'capCreateCaptureWindowA'; procedure GetPic(Panel: TPanel); begin Picture := capCreateCaptureWindow('Video',ws_child+ws_visible, 0, 0, 640, 480, Panel.Handle, 1); SendMessage(Picture, WM_CAP_DRIVER_CONNECT, 0, 0); SendMessage(Picture, WM_CAP_SET_PREVIEWRATE, 30, 0); sendMessage(Picture, WM_CAP_SET_OVERLAY, 1, 0); SendMessage(Picture, wm_cap_set_preview, 1, 0); end; Picture := capCreateCaptureWindow('Video',ws_child+ws_visible , 0, 0, 640, 480, Panel.Handle, 1); das handle angeben. Mfg MrScholz Edit: @ helmi Ich möchte ja das panel klein halten also nur 320x240 und da soll alles drauf zu sehen sein. |
Re: Stretch bei Panel?
also irgendwie schaut mein Code sehr ähnlich deinem aus :-)
mit 640 (Width) und 480 (Height) weisst du ja die Größe deines Videos. Jetzt kannst du ja einfach die Größe des Panels auf diese Werte setzen. [edit] ich war zu langsam: Wenn du das Video klein halten willst, dann schreib anstatt den 640 und 480 einfach 320 und 240. Und das Panel auf auf diese Width- und Height-Werte! Also so:
Code:
Das 0, 0, 320, 240 ist X, Y, Width, Height
Picture := capCreateCaptureWindow('Video',ws_child+ws_visible, 0,
0, 320, 240, Panel.Handle, 1); Panel.Width := 320; Panel.Height := 240; [/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:32 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