#wpf #expression-encoder
#wpf #выражение-кодировщик
Вопрос:
Я создаю приложение, которое будет работать на планшетном устройстве со встроенными двумя веб-камерами. Одним из требований является возможность захвата изображений и их сохранения.
До сих пор мне удавалось получить предварительный просмотр выходных данных веб-камеры, используя этот код
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. Вопрос в том, как мне захватить изображение из этого потока и вернуть новый объект изображения для последующей обработки?
Я попытался захватить хост winforms с помощью RenderTargetBitmap, но просто возвращает черный прямоугольник, и это не позволит мне отображать панель winforms.
Ответ №1:
Только что нашел этот фрагмент драгоценного камня в code project. Далее идет код. Здесь panelVideoPreview — это ваш предварительный просмотр, то есть окно панорамирования. надеюсь, это поможет.
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);
}
}
Ответ №2:
Если у вас есть окно над окном, которое вы хотите захватить, захват будет изображением над окном, или если вы сворачиваете окно, происходит то же самое, вы сделаете снимок экрана с координатами. Этот метод представляет собой захват экрана с координатами.
Как это будет изображение захвата потоковой передачи?