Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
1,31 MB
Nội dung
10/24/2018 Lập trình Ứng dụng quản lý C#.NET WinForm (tt) Nội dung XML GDI+ Custom Controls 10/24/2018 Nội dung XML GDI+ Custom Controls Cấu trúc file xml Dựa ngôn ngữ đánh dấu (Markup Language) Chỉ chứa nút (node) bao quát tất gọi nút gốc (node root) 10/24/2018 Cách thức lưu trữ thông tin Mỗi node chứa thông tin dựa vào thuộc tính (attribute) text (inner text) Thường sử dụng attribute để lưu thông tin ngắn gọn, đặc trưng,… cịn inner text lưu thơng tin dài Phân tích liệu XML Dữ liệu XML có thể được phân tích dựa nhiều mơ hình khác Mơ hình tún tính (Linear): theo mơ hình liệu được duyệt theo dạng đường thẳng, mơ hình phù hợp với dạng liệu tĩnh khơng có thay đởi Ví dụ ta muốn tìm thơng tin sách thư viện bắt đầu từ chủ đề của sách, đến tên sách, đến trang thứ của sách dòng thứ Tuy nhiên nếu sách đó được tái hay chuyển sang dạng khác mơ hình khơng cịn thích hợp Mơ hình (Tree Model): đã biết XML có dạng cấu trúc phân cấp thế có thể biểu diễn liệu XML theo cấu trúc Cấu trúc có ưu điểm có thể xác định được mối quan hệ phần tử với 10/24/2018 Mơ hình đối tượng XML Mơ hình đới tượng: Mơ hình đối tượng XML tập hợp đối tượng dùng để truy xuất thao tác với liệu XML Trong mơ hình liệu cũng được tở chức thành dạng cấu trúc cùng với nút Các đối tượng có nhiều thuộc tính phương thức để có thể quét cấu trúc XML phần tử Đọc ghi xml NET hỗ trợ nhiều cách đọc ghi xml (DOM, XmlReader, XmlWriter,…) Sử dụng cách đọc ghi theo xml DOM dễ dàng duyệt ngẫu nhiên node Trong cấu trúc DOM thì: root document node, thẻ element node, thuộc tính attribute node, inner text text node,… 10/24/2018 Ví dụ DOM Các thao tác Bắt đầu với đối tượng XmlDocument (lấy nguyên nội dung xml parse sang mơ hình xml DOM lưu nhớ) Lấy node root XmlNode nodeRoot = doc.DocumentElement; 10/24/2018 Các node Phương thức Lưu ý XmlNode lớp sở của dẫn xuất: XmlElement, XmlAttribute, XmlText,… Các phương thức 10/24/2018 Minh họa Ví dụ lấy giá trị thuộc tính của node 10/24/2018 Nội dung XML GDI+ Custom Controls GDI+ GDI: Graphical Device Interface GDI+ API (Application programming interface) cung cấp lớp cho phép Tạo đồ họa 2D vector Thao tác font, chuỗi ký tự Hiển thị đường, hình ảnh… Thư viện FCL chứa lớp thao tác vẽ namespace System.Drawing Tất thao tác tô vẽ GUI đều thực chức GDI+ 10/24/2018 Kiến trúc System.Drawing Font Graphics Color Point Rectangle Icon class structure Size Pen Region HatchBrush Image Brush LinearGradientBrush PathGradientBrush SolidBrush TextureBrush Graphics Class Graphics thể “Abstract” drawing surface Tập hợp “tool” cho phép thao tác surface đó Để lấy đối tượng Graphics Sử dụng thuộc tính Graphics được truyền cho OnPaint() Sử dụng phương thức CreateGraphics() của control Lấy từ đối tượng dẫn xuất từ Bitmap Gọi hàm Invalidate() thay OnPaint() 10/24/2018 Lấy đối tượng Graphics từ tham số protected override void OnPaint(PaintEventArgs paintevent) { Graphics graf=paintevent.Graphics; } Từ tham số PaintEventAtgs private void mainForm_Paint(object sender, PaintEventArgs paintevent) { Graphics graf=paintevent.Graphics; } Lấy đối tượng Graphics từ control, image private void PaintMe(Control testcontrol) { Graphics graf=testcontrol.CreateGraphics(); } Lấy từ control protected override void OnPaint(PaintEventArgs paintevent) { Bitmap bmpimage=new Bitmap(1024,768); Graphics graf = Graphics.FromImage (bmpimage); Lấy từ ảnh } 10 10/24/2018 Pen Pen Xác định width, style, fill style Không cho kế thừa, tạo thể được Trong namespace System.Drawing Pen p1 = new Pen(Color.Green); Pen p2 = new Pen(Color.blue, 10); Sử dụng lớp Pens có 141 pen được định nghĩa trước Pen p3 = Pens.Violet; Brush Brush Dùng để tô vùng bên của hình Class Brush class abstract nên không tạo thể Sử dụng lớp kế thừa sau để tạo brush SolidBrush LinearGradientBrush TextureBrush HatchBrush Sử dụng lớp Brushes định nghĩa trước brush 11 10/24/2018 Vẽ, tô Các phương thức vẽ DrawString DrawLine DrawRectangle DrawEllipse DrawImage … Các phương thức tô FillRectangle FillEllipse … Tọa độ Tọa độ hệ thống Gốc tọa độ (0,0) (w,0) (0,0) Form, Panel, GroupBox, File Bitmap … (0,h1) (0,h) (w1,0) Control (w1,h1) (w,h) 12 10/24/2018 Ví dụ Ví dụ public partial class Form1 : Form { public Form1() { InitializeComponent(); } protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; g.DrawString("Hello GDI!", Font, Brushes.Red, 20, 20); } } Ví dụ (tt) Ví dụ 13 10/24/2018 Ví dụ (tt) Ví dụ Ví dụ (tt) Ví dụ 14 10/24/2018 Ví dụ (tt) Ví dụ Solid Hatch LinearGradient Texture Ví dụ (tt) Ví dụ 15 10/24/2018 Ví dụ (tt) Ví dụ Ellipse vẽ lên ảnh, sau với vẽ ảnh lên Form Nội dung XML GDI+ Custom Controls 16 10/24/2018 Custom Controls User Controls (Composite) ProgressBar có status Derived Controls TextBox cho nhập số ListBox cuộn đến cuối Owner-Drawn Controls ListBox, ComboBox ListView, TreeView ToolTip MenuItem New Control Dẫn xuất trực tiếp từ Control Bài tập Tạo custom TextBox cho phép nhập số thực Tạo custom ProgressBar có hiển thị trạng thái Tạo custom ListBox cho phép hiển thị màu tùy chỉnh 17