Đồ 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
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. ...
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ìm kiếm theo từ khóa liên quan:
công nghệ thông tin kĩ thuật lập trình ngôn ngữ lập trình ngôn ngữ C# C# Đồ hoạ đa phương tiện ( Mutilmedia) và In ấn Đồ họa phần 5Gợi ý tài liệu liên quan:
-
52 trang 430 1 0
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 316 0 0 -
74 trang 301 0 0
-
96 trang 293 0 0
-
Báo cáo thực tập thực tế: Nghiên cứu và xây dựng website bằng Wordpress
24 trang 289 0 0 -
Đồ án tốt nghiệp: Xây dựng ứng dụng di động android quản lý khách hàng cắt tóc
81 trang 281 0 0 -
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 276 0 0 -
EBay - Internet và câu chuyện thần kỳ: Phần 1
143 trang 275 0 0 -
Tài liệu dạy học môn Tin học trong chương trình đào tạo trình độ cao đẳng
348 trang 269 1 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 266 0 0