CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 314

314
Chương 8: Đồ họa, đa phương tiện, và in ấn

.NET Framework không chứa bất kỳ lớp được-quản-lý nào để tương tác với các file video,
nhưng bạn có thể sử dụng chức năng DirectShow của thư viện Quartz dựa-trên-COM (có
trong Windows Media Player và hệ điều hành Windows). Để biết cách tạo một Interop
Assembly
cho thư viện Quartz, bạn hãy tham khảo mục 8.10.
Một khi đã tạo Interop Assembly, bạn có thể sử dụng giao diện

IMediaControl

để nạp và chơi

một file video. Về cơ bản, kỹ thuật này giống như kỹ thuật đã trình bày trong mục 8.10 với
file audio. Tuy nhiên, nếu muốn hiển thị cửa sổ video ngay bên trong giao diện ứng dụng của
bạn (hơn là trong một cửa sổ độc lập), bạn phải sử dụng giao diện

IVideoWindow

. Đối tượng

FilgraphManager

có thể được ép kiểu thành giao diện

IMediaControl

IVideoWindow

—và

nhiều giao diện khác cũng được hỗ trợ như

IBasicAudio

(cho phép bạn cấu hình các thiết lập

balance và volume). Với giao diện

IVideoWindow

, bạn có thể gắn kết xuất video vào một đối

tượng trên form như

Panel

hoặc

PictureBox

. Để làm được như vậy, bạn cần thiết lập thuộc

tính

IVideoWindow.Owner

là handle của điều kiểm đó (bạn có thể lấy được handle này bằng

thuộc tính

Control.Handle

). Kế tiếp, gọi

IVideoWindow.SetWindowPosition

để thiết lập kích

thước và vị trí của cửa sổ. Phương thức này cũng có thể được gọi để thay đổi kích thước video
trong quá trình playback (chẳng hạn, khi form bị thay đổi kích thước).
Ví dụ dưới đây cho phép người dùng mở bất kỳ file video nào và chơi nó trong một

PictureBox

.

PictureBox

bị neo đến tất cả các cạnh của form, như thế nó cũng thay đổi kích

thước khi form bị thay đổi kích thước. Đoạn mã đáp ứng cho sự kiện

PictureBox.SizeChanged

sẽ thay đổi kích thước của cửa sổ video tương ứng.

using System;

using QuartzTypeLib;

using System.Windows.Forms;

public class ShowMovie : System.Windows.Forms.Form {

private System.Windows.Forms.PictureBox pictureBox1;

private System.Windows.Forms.Button cmdOpen;

// (Bỏ qua phần mã designer.)

// Định nghĩa các hằng dùng để chỉ định window style.

private const int WM_APP = 0x8000;

private const int WM_GRAPHNOTIFY = WM_APP + 1;

private const int EC_COMPLETE = 0x01;

private const int WS_CHILD = 0x40000000;

private const int WS_CLIPCHILDREN = 0x2000000;

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.