ASP và Windows Form Microsoft ASP.NET phần 4
Số trang: 9
Loại file: pdf
Dung lượng: 175.66 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 trả về động một bức hình (chẳng hạn, để tạo dựng kết xuất dạng biểu đồ hoặc đồ thị). Tạo dựng bức hình bằng GDI+ và một đối tượng System.Drawing.Bitmap trong-bộ-nhớ.
Nội dung trích xuất từ tài liệu:
ASP và Windows Form Microsoft ASP.NET phần 4 1.1 Trả về động một bức hình Bạn cần trả về động một bức hình (chẳng hạn, để tạo dựng kết xuất dạng biểu đồ hoặc đồ thị). Tạo dựng bức hình bằng GDI+ và một đối tượng System.Drawing.Bitmap trong-bộ-nhớ. Kế đó, bạn có thể ghi nó ra dòng kết xuất (output stream), hoặc lưu nó vào ổ đĩa cứng của server và hiển thị nó với điều kiểm web Image.Bạn có thể vẽ động các bức hình trong một ứng dụng Web bằng cách sử dụng cùng đoạnmã GDI+ đã sử dụng trong một ứng dụng dựa-trên-Windows. Chỉ có điểm khác là cáchthức bạn trả về bức hình cuối cùng như thế nào. Về cơ bản, có hai cách tiếp cận mà bạncó thể sử dụng: • Bạn có thể đưa trực tiếp nội dung nhị phân của bức hình vào thuộc tính OutputStream của đối tượng HttpResponse. Đây là một cách tiếp cận hay nếu bạn không muốn làm đầy ổ đĩa cứng của server với các file hình không hề được sử dụng lại. Đây cũng là sự lựa chọn tốt nhất nếu bạn cần tạo động các bức hình được thiết kế để phù hợp với đầu vào của người dùng. • Bạn có thể lưu bức hình vào hệ thống file của web-server và sử dụng thẻ HTML để hiển thị nó. Đây là sự lựa chọn tốt nếu bạn cần tạo một bức hình sẽ được sử dụng lại, vì tránh được chi phí của việc tái tạo hình liên tục.Mục này khảo sát cả hai cách tiếp cận trên. Trước tiên, hãy xét cách tạo động một hìnhmà không lưu nó ra file. Trong ví dụ này, mục đích là tạo một banner đơn giản (xem hình7.10). The image part with relationship ID rId5 was not found in the file. Hình 7.10 Một banner được-tạo-độngĐể ý rằng chỉ có phần text của banner là do người dùng cung cấp (thông qua chuỗi truyvấn). Font, màu, và kích thước được viết mã cứng (mặc dù chúng có thể được thiết lập dễdàng dựa vào các đối số chuỗi truy vấn khác hoặc dựa vào file Web.config).Đoạn mã dưới đây sẽ trình bày cách tiếp cận này:using System;using System.Web;using System.Web.UI.WebControls;using System.Drawing;using System.Drawing.Drawing2D;public class DynamicGraphic : System.Web.UI.Page { // (Bỏ qua phần mã designer.) private void Page_Load(object sender, System.EventArgs e) { // Lấy text từ chuỗi truy vấn. // Nếu không có text, chọn mặc định. string text = ; if (Request.QueryString[image] == null) { Response.Redirect(Request.Url + ?image= + Server.UrlEncode(This is a test image)); } else { text = Server.UrlDecode(Request.QueryString[image]); } // Tạo một hình bitmap trong-bộ-nhớ // (rộng 300 pixel và cao 200 pixel). int width = 300, height = 200; Bitmap bitmap = new Bitmap(width, height); // Lấy graphics context của hình bitmap. Graphics graphics = Graphics.FromImage(bitmap); // Thiết lập màu nền và chất lượng hình. // Màu này sẽ trở thành đường viền. graphics.Clear(Color.OrangeRed); graphics.SmoothingMode = SmoothingMode.AntiAlias; // Vẽ một hình chữ nhật. graphics.FillRectangle(new SolidBrush(Color.Olive), 5, 5, width - 10, height - 10); // Chọn font và alignment cho text. Font fontBanner = new Font(Verdana, 24, FontStyle.Bold); StringFormat stringFormat = new StringFormat(); stringFormat.Alignment = StringAlignment.Center; stringFormat.LineAlignment = StringAlignment.Center; // Vẽ text. graphics.DrawString(text, fontBanner, new SolidBrush(Color.LightYellow), new Rectangle(0, 0, width, height), stringFormat); // Lưu bức hình vào dòng kết xuất. bitmap.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif); graphics.Dispose(); bitmap.Dispose(); }}Khi lưu bức hình vào dòng kết xuất, bạn sẽ thế chỗ bất kỳ kết xuất nào khác. Vì thế, bạnkhông thể sử dụng kỹ thuật này với một trang cũng có chứa Web controls hoặc nội dungHTML tĩnh. Theo đó, nếu muốn sử dụng một trang phối hợp các bức hình được-tạo-độngvà các điều kiểm web, bạn cần “bọc” bức hình được-tạo-động trong một điều kiểm hoặcghi bức hình ra ổ đĩa cứng trước khi hiển thị nó.Nếu muốn lưu file vào ổ đĩa cứng, bạn cần chuyển phần mã tạo dựng bức hình thành mộtphương thức độc lập, mà chúng ta sẽ đặt tên là GenerateBanner. Kế đó, trong phươngthức thụ lý sự kiện Page.Load, bạn kiểm tra xem file đã tồn tại chưa (sử dụng phươngthức tĩnh File.Exists). Nếu file chưa tồn tại, bạn tạo nó trong bộ nhớ bằng phương thứcGenerateBanner và lưu nó bằng phương thức Bitmap.Save. Nếu file đã tồn tại, bạn chỉcần nạp thẳng bức hình này.Đoạn mã dưới đây sẽ trình bày cách tiếp cận này:using System;using System.IO;using System.Web;using System.Web.UI.WebControls;using System.Drawing;using System.Drawing.Drawing2D;public class DynamicGraphic : ...
Nội dung trích xuất từ tài liệu:
ASP và Windows Form Microsoft ASP.NET phần 4 1.1 Trả về động một bức hình Bạn cần trả về động một bức hình (chẳng hạn, để tạo dựng kết xuất dạng biểu đồ hoặc đồ thị). Tạo dựng bức hình bằng GDI+ và một đối tượng System.Drawing.Bitmap trong-bộ-nhớ. Kế đó, bạn có thể ghi nó ra dòng kết xuất (output stream), hoặc lưu nó vào ổ đĩa cứng của server và hiển thị nó với điều kiểm web Image.Bạn có thể vẽ động các bức hình trong một ứng dụng Web bằng cách sử dụng cùng đoạnmã GDI+ đã sử dụng trong một ứng dụng dựa-trên-Windows. Chỉ có điểm khác là cáchthức bạn trả về bức hình cuối cùng như thế nào. Về cơ bản, có hai cách tiếp cận mà bạncó thể sử dụng: • Bạn có thể đưa trực tiếp nội dung nhị phân của bức hình vào thuộc tính OutputStream của đối tượng HttpResponse. Đây là một cách tiếp cận hay nếu bạn không muốn làm đầy ổ đĩa cứng của server với các file hình không hề được sử dụng lại. Đây cũng là sự lựa chọn tốt nhất nếu bạn cần tạo động các bức hình được thiết kế để phù hợp với đầu vào của người dùng. • Bạn có thể lưu bức hình vào hệ thống file của web-server và sử dụng thẻ HTML để hiển thị nó. Đây là sự lựa chọn tốt nếu bạn cần tạo một bức hình sẽ được sử dụng lại, vì tránh được chi phí của việc tái tạo hình liên tục.Mục này khảo sát cả hai cách tiếp cận trên. Trước tiên, hãy xét cách tạo động một hìnhmà không lưu nó ra file. Trong ví dụ này, mục đích là tạo một banner đơn giản (xem hình7.10). The image part with relationship ID rId5 was not found in the file. Hình 7.10 Một banner được-tạo-độngĐể ý rằng chỉ có phần text của banner là do người dùng cung cấp (thông qua chuỗi truyvấn). Font, màu, và kích thước được viết mã cứng (mặc dù chúng có thể được thiết lập dễdàng dựa vào các đối số chuỗi truy vấn khác hoặc dựa vào file Web.config).Đoạn mã dưới đây sẽ trình bày cách tiếp cận này:using System;using System.Web;using System.Web.UI.WebControls;using System.Drawing;using System.Drawing.Drawing2D;public class DynamicGraphic : System.Web.UI.Page { // (Bỏ qua phần mã designer.) private void Page_Load(object sender, System.EventArgs e) { // Lấy text từ chuỗi truy vấn. // Nếu không có text, chọn mặc định. string text = ; if (Request.QueryString[image] == null) { Response.Redirect(Request.Url + ?image= + Server.UrlEncode(This is a test image)); } else { text = Server.UrlDecode(Request.QueryString[image]); } // Tạo một hình bitmap trong-bộ-nhớ // (rộng 300 pixel và cao 200 pixel). int width = 300, height = 200; Bitmap bitmap = new Bitmap(width, height); // Lấy graphics context của hình bitmap. Graphics graphics = Graphics.FromImage(bitmap); // Thiết lập màu nền và chất lượng hình. // Màu này sẽ trở thành đường viền. graphics.Clear(Color.OrangeRed); graphics.SmoothingMode = SmoothingMode.AntiAlias; // Vẽ một hình chữ nhật. graphics.FillRectangle(new SolidBrush(Color.Olive), 5, 5, width - 10, height - 10); // Chọn font và alignment cho text. Font fontBanner = new Font(Verdana, 24, FontStyle.Bold); StringFormat stringFormat = new StringFormat(); stringFormat.Alignment = StringAlignment.Center; stringFormat.LineAlignment = StringAlignment.Center; // Vẽ text. graphics.DrawString(text, fontBanner, new SolidBrush(Color.LightYellow), new Rectangle(0, 0, width, height), stringFormat); // Lưu bức hình vào dòng kết xuất. bitmap.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif); graphics.Dispose(); bitmap.Dispose(); }}Khi lưu bức hình vào dòng kết xuất, bạn sẽ thế chỗ bất kỳ kết xuất nào khác. Vì thế, bạnkhông thể sử dụng kỹ thuật này với một trang cũng có chứa Web controls hoặc nội dungHTML tĩnh. Theo đó, nếu muốn sử dụng một trang phối hợp các bức hình được-tạo-độngvà các điều kiểm web, bạn cần “bọc” bức hình được-tạo-động trong một điều kiểm hoặcghi bức hình ra ổ đĩa cứng trước khi hiển thị nó.Nếu muốn lưu file vào ổ đĩa cứng, bạn cần chuyển phần mã tạo dựng bức hình thành mộtphương thức độc lập, mà chúng ta sẽ đặt tên là GenerateBanner. Kế đó, trong phươngthức thụ lý sự kiện Page.Load, bạn kiểm tra xem file đã tồn tại chưa (sử dụng phươngthức tĩnh File.Exists). Nếu file chưa tồn tại, bạn tạo nó trong bộ nhớ bằng phương thứcGenerateBanner và lưu nó bằng phương thức Bitmap.Save. Nếu file đã tồn tại, bạn chỉcần nạp thẳng bức hình này.Đoạn mã dưới đây sẽ trình bày cách tiếp cận này:using System;using System.IO;using System.Web;using System.Web.UI.WebControls;using System.Drawing;using System.Drawing.Drawing2D;public class DynamicGraphic : ...
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# ASP và Windows Form Microsoft ASP.NET phần 4Gợi ý tài liệu liên quan:
-
52 trang 429 1 0
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 311 0 0 -
74 trang 294 0 0
-
96 trang 290 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 288 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 278 0 0 -
EBay - Internet và câu chuyện thần kỳ: Phần 1
143 trang 272 0 0 -
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 271 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 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 262 0 0