0

2 つの Web カメラが組み込まれたタブレット デバイスで実行されるアプリケーションを作成しています。要件の 1 つは、画像をキャプチャして保存できることです。

これまでのところ、このコードを使用してウェブカメラの出力のプレビューを取得できました

Dim Job As New LiveJob
Dim source As LiveDeviceSource
source = Job.AddDeviceSource(EncoderDevices.FindDevices(EncoderDeviceType.Video).Item(0), Nothing)

source.PreviewWindow = New PreviewWindow(New HandleRef(Me.panPreview, Me.panPreview.Handle))

Job.ActivateSource(source)

これにより、ホストされた winforms パネルにプレビューが表示されます。問題は、このストリームから画像をキャプチャし、後で処理するために新しい画像オブジェクトを返す方法です。

RenderTargetBitmap を使用して winforms ホストをキャプチャしようとしましたが、黒い四角形を返すだけで、winforms パネルをレンダリングできません。

4

2 に答える 2

0

コードプロジェクトでこの宝石を見つけました。ここにコードがあります。ここで、panelVideoPreviewはプレビュー、つまりpanPreviewウィンドウです。お役に立てれば。

private void cmdGrabImage_Click(object sender, EventArgs e)        
{
// Create a Bitmap of the same dimension of panelVideoPreview (Width x Height)
    using (Bitmap bitmap = new Bitmap(panelVideoPreview.Width, panelVideoPreview.Height))
    { 
        using (Graphics g = Graphics.FromImage(bitmap))
        {
            // Get the paramters to call g.CopyFromScreen and get the image
            Rectangle rectanglePanelVideoPreview = panelVideoPreview.Bounds;
            Point sourcePoints = panelVideoPreview.PointToScreen(new Point(panelVideoPreview.ClientRectangle.X, panelVideoPreview.ClientRectangle.Y));
            g.CopyFromScreen(sourcePoints, Point.Empty, rectanglePanelVideoPreview.Size); 
        }
        string strGrabFileName = String.Format("C:\\Snapshot_{0:yyyyMMdd_hhmmss}.jpg", DateTime.Now);
        toolStripStatusLabel1.Text = strGrabFileName;
        bitmap.Save(strGrabFileName, System.Drawing.Imaging.ImageFormat.Jpeg);                
    }
}
于 2011-10-25T07:50:23.147 に答える
0

キャプチャしたいウィンドウの上にウィンドウがある場合、キャプチャはウィンドウ上の画像になるか、ウィンドウを最小化すると同じように発生し、座標のスクリーンショットをキャプチャします。このメソッドは、座標を含む画面のキャプチャです。

配信のキャプチャー画像はいかがでしょうか?

于 2012-03-04T17:43:25.990 に答える