Danh mục

Đồ hoạ, đa phương tiện ( Mutilmedia) và In ấn Đồ họa phần 4

Số trang: 11      Loại file: pdf      Dung lượng: 189.87 KB      Lượt xem: 10      Lượt tải: 0    
tailieu_vip

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bạn cần phát một âm thanh đơn giản, chẳng hạn tiếng “beep” của hệ thống. Sử dụng một hàm không-được-quản-lý Win32 API như Beep hay sndPlaySound, hoặc gọi hàm Beep của Microsoft Visual Basic .NET. .NET Framework không chứa bất kỳ lớp được-quản-lý nào thực hiện việc chơi các file âm thanh, ngay cả tiếng “beep” của hệ thống cũng không.
Nội dung trích xuất từ tài liệu:
Đồ hoạ, đa phương tiện ( Mutilmedia) và In ấn Đồ họa phần 4 1.1 Phát tiếng “beep” của hệ thống Bạn cần phát một âm thanh đơn giản, chẳng hạn tiếng “beep” của hệ thống. Sử dụng một hàm không-được-quản-lý Win32 API như Beep hay sndPlaySound, hoặc gọi hàm Beep của Microsoft Visual Basic .NET. .NET Framework không chứa bất kỳ lớp được-quản-lý nào thực hiện việc chơi các file âm thanh, ngay cả tiếng “beep” của hệ thống cũng không. Tuy nhiên, bạn có thể dễ dàng vượt qua trở ngại này bằng Win32 API hoặc Visual Basic .NET (cấp hàm Beep thông qua lớp Microsoft.VisualBasic.Interaction). Trong trường hợp thứ hai, bạn phải thêm một tham chiếu đến Microsoft.VisualBasic.dll (có trong tất cả các phiên bản của .NET Framework). Ví dụ sau đây sử dụng cả hàm API Beep và hàm Visual Basic Beep. Chú ý là hàm API sử dụng loa gắn trong của máy tính và phát âm thanh với tần số (tính bằng Hertz, nằm trong khoảng từ 37 đến 32,767) và thời gian (tính bằng mili-giây) cho trước. Cách này sẽ không phát bất kỳ âm thanh nào nếu máy tính không có loa gắn trong. Mặt khác, hàm Visual Basic Beep phát tiếng “beep” chuẩn của hệ thống (là một file WAV). Cách này sẽ không phát bất kỳ âm thanh nào nếu máy tính không có card âm thanh, nếu card âm thanh không được kết nối với loa gắn ngoài, hoặc nếu Windows được cấu hình là không phát âm thanh (thông qua phần Sounds and Audio Devices trong Control Panel). using System; using System.Runtime.InteropServices; using Microsoft.VisualBasic; public class BeepTest { [DllImport(kernel32.dll)] private static extern bool Beep(int freq, int dur); [STAThread] private static void Main(string[] args) { // Phát tiếng beep tần số 440 Hz trong 100 mili-giây // trên internal speaker. Console.WriteLine(Win32 API beep test.); Beep(440, 100); Console.ReadLine(); // Phát tiếng beep mặc định của hệ thống (file WAV). Console.WriteLine(VB beep test.); Interaction.Beep(); Console.ReadLine(); } } Bạn cũng có thể sử dụng các hàm Win32 API để chơi một file âm thanh do bạn chọn. Kỹ thuật này được mô tả trong mục 8.10. 1.2 Chơi file audio Bạn cần chơi một file WAV hoặc MP3. Sử dụng hàm API sndPlaySound (hỗ trợ file WAV), hoặc sử dụng thành phần ActiveMovie có trong Windows Media Player (hỗ trợ file WAV và MP3) Để chơi bất kỳ âm thanh nào trong một ứng dụng .NET, bạn cần nhận sự giúp đỡ của một thư viện bên ngoài hoặc lời gọi hệ thống. May mắn thay, cả hai tùy chọn này đều dễ dàng thực hiện được. • Thư viện winmm.dll (có trong Windows) chứa hàm sndPlaySound nhận vào tên của một file WAV và một thông số chỉ định cách chơi. Bạn có thể chọn chơi âm thanh một cách đồng bộ (gián đoạn việc thực thi của chương trình cho đến khi âm thanh đã hoàn tất), bất đồng bộ, hoặc trong một vòng lặp chạy phía nền. • Thư viện Quartz cung cấp một thành phần COM có thể chơi nhiều kiểu file audio, gồm các định dạng WAV và MP3. Thư viện Quartz được cấp thông qua quartz.dll và nó là một phần của Microsoft DirectX cho Windows Media Player và hệ điều hành Windows. Trong ví dụ này, chúng ta sẽ sử dụng cách tiếp cận thứ hai. Bước đầu tiên là tạo một lớp Interop có thể quản lý sự tương tác giữa ứng dụng .NET và thư viện Quartz. Bạn có thể tạo một lớp C# cùng với đoạn mã Interop này bằng tiện ích Type Library Importer (tlbimp.exe) và dòng lệnh sau đây ([WindowsDir] là đường dẫn của thư mục cài đặt Windows): tlbimp [WindowsDir]\system32\quartz.dll /out:QuartzTypeLib.dll Bạn có thể sử dụng Visual Studio .NET để tạo lớp Interop bằng cách thêm vào một tham chiếu. Chỉ cần nhắp phải vào dự án của bạn trong Solution Explorer, và chọn Add Reference từ menu ngữ cảnh. Kế tiếp, chọn thẻ COM, và cuộn xuống để chọn ActiveMovie control type library (xem hình 8.7). Một khi lớp Interop đã được tạo, bạn có thể làm việc với giao diện IMediaControl. Bạn có thể chỉ định file mà bạn muốn chơi bằng RenderFile, và có thể điều khiển playback bằng các phương thức như Run, Stop, và Pause. Playback diễn ra trên một tiểu trình độc lập, như thế nó sẽ không block đoạn mã của bạn. The image part with relationship ID rId5 was not found in the file. Hình 8.7 Chọn ActiveMovie control type library trong hộp thoại Add Reference Ví dụ, tiện ích Console dưới đây sẽ chơi file audio được chỉ định trong đối số dòng lệnh đầu tiên: using System; class PlayAudio { public static void Main(string[] args) { // Lấy tên file được chỉ định trong đối số đầu tiên. string filename = args[0]; // Truy xuất giao diện IMediaControl. QuartzTypeLib.FilgraphManager graphManager = new QuartzTypeLib.FilgraphManager(); QuartzTypeLib.IMediaControl mc = (QuartzTypeLib.IMediaControl)graphManager; // Chỉ định tên file. mc.RenderFile(filename); // Bắt đầu chơi file audio bất đồng bộ. mc.Run(); Console.WriteLine(Press Enter to continue.); Console.ReadLine(); mc.Stop(); } } Bạn cũng có thể sử dụng thư viện Quartz để hiển thị file video (sẽ được trình bày trong mục 8.11). 1.3 Chơi file video Bạn cần chơi một file video (như MPEG, AVI, hoặc WMV) ngay trên form. Sử dụng thành phần ActiveMovie có trong Media Player. Gắn kết xuất video vào một PictureBox trên form bằng cách thiết lập thuộc tính IVideoWindow.Owner là thuộc tính PictureBox.Handle. .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à c ...

Tài liệu được xem nhiều: