Diễn Đàn » Hướng Dẫn Lập trình

Tạo động một bức hình trên một phần trang

0 trả lời, 539 lượt xem — Trang 1 / 1
Bạn muốn tạo một trang phối hợp một hình được-tạo-động và các điều kiểm web thông thường.
Đặt mã lệnh tạo hình động trong một trang riêng biệt, và tạo một thẻ <img> tham chiếu đến trang đó.
Cách dễ nhất để sử dụng các bức hình được-tạo-động với ASP.NET là ghi chúng trực tiếp vào dòng đáp ứng. Điều này có nghĩa: trang có sử dụng một bức hình được-tạo-động cũng không thể sử dụng các điều kiểm web. Một cách để vượt qua trở ngại này là tạo một điều kiểm web tùy biến. Một chọn lựa khác đơn giản hơn là sử dụng một thẻ <img> tham chiếu đến form sinh ra bức hình động.
Hình 15-19 trinh bày một ví dụ. Phía bên trái là một số điều kiểm web cho phép người dùng chỉ định dữ liệu cho biểu đồ pie. Bản thân biểu đồ pie được tạo động và được biểu diễn phía bên phải. Trong trường hợp này, biểu đồ pie là một điều kiểm web Image. Thuộc tính Image.ImageUrl được thiết lập là DynamicChart.aspx, đây là form chứa logic vẽ GDI+.
Điều trở ngại trong ví dụ này là chuyển dữ liệu của biểu đồ pie từ form chính sang form thể hiện hình động. Bạn có thể sử dụng các đối số chuỗi truy vấn, mặc dù chúng dễ bị can thiệp và chỉ hỗ trợ thông tin chuỗi. Hoặc bạn có thể sử dụng trạng thái phiên làm việc, như trong ví dụ này. Cách tiếp cận này làm việc một cách trong suốt, mặc dù tốn một ít bộ nhớ server.
Đoạn mã dưới đây tạo form cho phép người dùng định nghĩa dữ liệu cho biểu đồ pie:
Public Class MainPage    Inherits System.Web.UI.Page       ' (Bỏ qua phần mã designer.)    ' Dữ liệu này sẽ được sử dụng để tạo biểu đồ pie.    Private PieSlices As New ArrayList()       Private Sub Page_Load(ByVal sender As System.Object, _      ByVal e As System.EventArgs) Handles MyBase.Load        ' Thu lấy các pie slice.        If Not Session("ChartData") Is Nothing Then            PieSlices = CType(Session("ChartData"), ArrayList)        End If    End Sub       Private Sub cmdAdd_Click(ByVal sender As System.Object, _      ByVal e As System.EventArgs) Handles cmdAdd.Click        ' Tạo một pie slice mới.        Dim PieSlice As New NumericDataItem(txtLabel.Text, _          CType(Val(txtValue.Text), Single))        PieSlices.Add(PieSlice)           ' Kết ListBox vào dữ liệu mới.        lstPieSlices.DataSource = PieSlices        lstPieSlices.DataBind()    End Sub       Private Sub Page_PreRender(ByVal sender As Object, _      ByVal e As System.EventArgs) Handles MyBase.PreRender        ' Trước khi thể hiện trang, lưu trữ tập hợp các        ' pie slice hiện có.        Session("ChartData") = PieSlices    End Sub   End Class
Đoạn mã mục như sau:
Private Sub Page_Load(ByVal sender As System.Object, _  ByVal e As System.EventArgs) Handles MyBase.Load       ' Tạo một hình bitmap trong-bộ-nhớ.    Dim Image As New Bitmap(300, 200)    Dim g As Graphics = Graphics.FromImage(Image)       ' Thiết lập màu nền và chất lượng thể hiện.    g.Clear(Color.White)    g.SmoothingMode = Drawing.Drawing2D.SmoothingMode.AntiAlias       ' Thu lấy dữ liệu.    Dim ChartData As ArrayList    If Session("ChartData") Is Nothing Then        ' Hiển thị hình trắng.        Image.Save(Response.OutputStream, _          System.Drawing.Imaging.ImageFormat.Gif)        Return    Else        ChartData = CType(Session("ChartData"), ArrayList)    End If       ' (Bỏ qua phần mã vẽ còn lại.)   End Sub

 
Trích Từ “Các giải pháp lập trình VISUAL BASIC .NET (tập 2)”
 
Đăng nhập để trả lời
0