2012-11-05 45 views
5

Tôi cần chụp màn hình dưới dạng video, vì tôi đã sử dụng Bộ mã hóa biểu thức 4, nhưng trong ứng dụng của tôi, tôi cũng cần chụp một cửa sổ, nhưng tôi không thể tìm được cách làm nó, với EE4 tôi đã cố gắng thay đổi động CaptureRectangle của ScreenCaptureJob của tôi, nhưng điều đó dường như không thể. Vì vậy, câu hỏi của tôi là, bạn có biết dù sao làm điều này 'chụp cửa sổ duy nhất' bằng cách sử dụng tốt hơn C# hoặc có thể C + +?Quay video chỉ một cửa sổ

Trả lời

2

Bạn có thể lấy tay cầm cửa sổ mà bạn quan tâm, đặt bộ hẹn giờ và tại mỗi bộ đếm thời gian, hãy nắm bắt được nội dung của cửa sổ đó. Làm như vậy là không tầm thường, nhưng chắc chắn có thể. Tôi đã làm nó trong C nhiều năm trước, nhưng mã đó đã biến mất lâu rồi.

Sự cố đơn giản hơn nếu bạn chỉ muốn chụp một vùng hình chữ nhật của màn hình. Bạn có thể nhận được cửa sổ xử lý, truy vấn kích thước và vị trí của nó, và sau đó sao chép khu vực đó từ màn hình. Trong C hoặc C++, bạn sẽ nhận được DC của máy tính để bàn và các bit sao chép từ nó. Trong C#, bạn có thể tạo một kích thước Bitmap là kích thước của cửa sổ, gọi Graphics.FromImage để nhận đối tượng Graphics cho hình ảnh và sau đó gọi CopyFromScreen để nhận nội dung cửa sổ. Hạn chế là điều này chỉ hoạt động nếu không có gì là bao gồm các cửa sổ trong câu hỏi. Nếu có thứ gì đó che phủ bất kỳ phần nào của cửa sổ, bạn sẽ chụp được.

Trong mọi trường hợp, bạn kết thúc bằng luồng hình ảnh mà bạn cần kết hợp thành video. Có một số thư viện sẽ làm điều đó. Đối với giải pháp C#, bạn có thể bắt đầu bằng cách xem create video from streamed images c#. Tôi nghi ngờ có các thư viện tương tự cho C++. Ngoài ra còn có một số công cụ dòng lệnh mà sẽ làm điều đó, mặc dù kinh nghiệm của tôi với họ đã được ít hơn thỏa đáng.

+0

Kỹ thuật này là chính xác những gì tôi sẽ làm trước khi cố gắng sử dụng bộ mã hóa, nỗi sợ duy nhất của tôi là về hiệu suất, nhưng sau khi chơi với DirectX tôi thấy rằng có thể không có vấn đề gì cả. –