Danh mục

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

Số trang: 13      Loại file: pdf      Dung lượng: 187.22 KB      Lượt xem: 10      Lượt tải: 0    
Thư viện của tui

Phí tải xuống: 2,000 VND Tải xuống file đầy đủ (13 trang) 0
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 in text hoặc hình. Thụ lý sự kiện PrintDocument.PrintPage, và sử dụng các phương thức DrawString và DrawImage của lớp Graphics để in dữ liệu ra trang. .NET sử dụng mô hình in dựa-trên-sự-kiện bất đồng bộ (asynchronous event-based printing model)
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 5 1.1 In văn bản đơn giản Bạn cần in text hoặc hình. Thụ lý sự kiện PrintDocument.PrintPage, và sử dụng các phương thức DrawString và DrawImage của lớp Graphics để in dữ liệu ra trang..NET sử dụng mô hình in dựa-trên-sự-kiện bất đồng bộ (asynchronous event-basedprinting model). Để in một văn bản, bạn cần tạo một đối tượngSystem.Drawing.Printing.PrintDocument, cấu hình các thuộc tính của nó, và rồi gọiphương thức Print để thực hiện tác vụ in. Bộ thực thi sẽ phát sinh các sự kiện BeginPrint,PrintPage, và EndPrint của lớp PrintDocument trên một tiểu trình mới. Bạn thụ lý các sựkiện này và sử dụng đối tượng System.Drawing.Graphics để xuất dữ liệu ra trang. Hìnhvà text được ghi ra trang theo cùng cách như bạn vẽ lên cửa sổ bằng GDI+. Tuy nhiên,bạn có thể cần phải theo vết vị trí của bạn trên trang, vì mọi phương thức của lớpGraphics đều yêu cầu tọa độ chỉ định nơi cần vẽ.Các thiết lập cho máy in được cấu hình thông qua các thuộc tínhPrintDocument.PrinterSettings và PrintDocument.DefaultPageSettings. Thuộc tínhPrinterSettings trả về một đối tượng PrinterSettings (đã được mô tả trong mục 8.12) chobiết máy in sẽ được sử dụng. Thuộc tính DefaultPageSettings cung cấp đối tượngPageSettings cho biết độ phân giải (resolution), lề (margin), hướng trang (orientation)...Bạn có thể cấu hình các thuộc tính này trong mã lệnh, hoặc bạn có thể sử dụng lớpSystem.Windows.Forms.PrintDialog để người dùng thực hiện các thay đổi thông qua hộpthoại in chuẩn của Windows (xem hình 8.9). Trong hộp thoại in, người dùng có thể chọnmột máy in và chọn số lượng bản in (number of copies). Người dùng cũng có thể nhắpvào nút Properties để cấu hình các thiết lập nâng cao như cách bố trí trang (layout) và độphân giải máy in (resolution). Cuối cùng, người dùng có thể chấp thuận hoặc hủy bỏ thaotác in bằng cách nhắp OK hoặc Cancel. The image part with relationship ID rId5 was not found in the file. Hình 8.9 Hộp thoại PrintTrước khi sử dụng lớp PrintDialog, bạn phải gắn nó vào đối tượng PrintDocument bằngcách thiết lập thuộc tính PrintDialog.Document. Theo đó, bất kỳ sự thay đổi nào do ngườidùng thực hiện trong hộp thoại in sẽ tự động được áp dụng vào đối tượng PrintDocument.Ví dụ dưới đây là một form chỉ chứa một nút lệnh. Khi người dùng nhắp vào nút này, ứngdụng sẽ tạo một đối tượng PrintDocument mới, cho phép người dùng cấu hình các thiếtlập in, và rồi bắt đầu thao tác in bất đồng bộ. Phương thức thụ lý sự kiện đáp ứng cho sựkiện PrintPage sẽ ghi ra nhiều dòng text và một bức hình.using System;using System.Windows.Forms;using System.Drawing;using System.Drawing.Printing;public class SimplePrint : System.Windows.Forms.Form { private System.Windows.Forms.Button cmdPrint; // (Bỏ qua phần mã designer.) private void cmdPrint_Click(object sender, System.EventArgs e) { // Tạo một văn bản và gắn vào phương thức thụ lý sự kiện. PrintDocument doc = new PrintDocument(); doc.PrintPage += new PrintPageEventHandler(this.Doc_PrintPage); // Cho phép người dùng chọn một máy in // và chỉ định các thiết lập khác. PrintDialog dlgSettings = new PrintDialog(); dlgSettings.Document = doc; // Nếu người dùng nhắp OK thì in văn bản. if (dlgSettings.ShowDialog() == DialogResult.OK) { // Phương thức này trả về tức thì, trước khi tác vụ in // bắt đầu. Sự kiện PrintPage sẽ phát sinh bất đồng bộ. doc.Print(); } } private void Doc_PrintPage(object sender, PrintPageEventArgs e) { // Định nghĩa font. Font font = new Font(Tahoma, 30); // Xác định vị trí trên trang. // Trong trường hợp này, chúng ta đọc các thiết lập lề // (mặc dù không có gì ngăn chúng ta vượt qua biên lề). float x = e.MarginBounds.Left; float y = e.MarginBounds.Top; // Xác định chiều cao của một dòng (dựa trên font được sử dụng). float lineHeight = font.GetHeight(e.Graphics); // In năm dòng text. for (int i=0; i < 5; i++) { // Vẽ text với bút vẽ đen, sử dụng font và // tọa độ mà chúng ta đã xác định. e.Graphics.DrawString(Thập Diện Mai Phục + i.ToString(), font, Brushes.Black, x, y); // Dịch xuống một dòng. y += lineHeight; } y += lineHeight; // Vẽ hình. e.Graphics.DrawImage(Image.FromFile(Application.StartupPath + \test.bmp), x, y); }}Ví dụ này có một hạn chế là nó chỉ in một trang đơn. Để in các văn bản phức tạp và nhiềutrang hơn, bạn cần phải tạo một lớp chuyên biệt để đóng gói các thông tin về văn bản,trang hiện hành... Kỹ thuật này sẽ được trình bày trong mục 8.14. The image part with relationship ID rId6 was not found in the file. ...

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