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 hoặc text con inner text Thường sử dụng attribute để lưu các thông tin ngắn gọn, đặc trưng,… còn inner
Trang 1C#.NET WinForm (tt) Lập trình Ứng dụng quản lý
Nội dung
XML cơ bản
GDI+
Custom Controls
Trang 2Nội dung
XML cơ bản
GDI+
Custom Controls
Cấu trúc file xml
Dựa trên ngôn ngữ đánh dấu (Markup Language)
Chỉ chứa duy nhất 1 nút (node) bao quát tất cả
gọi là nút gốc (node root)
Trang 3Cá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) hoặc text con (inner text)
Thường sử dụng attribute để lưu các thông tin
ngắn gọn, đặc trưng,… còn inner text lưu các
thông tin dài
Phân tích dữ liệu XML
Dữ liệu trong XML có thể được phân tích dựa trên
nhiều mô hình khác nhau
Mô hình tuyến tính (Linear): theo mô hình này dữ liệu
được duyệt theo dạng đường thẳng, mô hình chỉ phù
hợp với các dạng dữ liệu tĩnh không có sự thay đổi Ví
dụ như ta muốn tìm thông tin trong 1 cuốn sách trong
thư viện chúng ta bắt đầu từ chủ đề của sách, đến tên
sách, đến trang thứ mấy của sách và dòng thứ mấy Tuy
nhiên nếu cuốn sách đó được tái bản hay chuyển sang
dạng khác thì mô hình này không còn thích hợp.
Mô hình cây (Tree Model): như chúng ta đã biết XML
có dạng cấu trúc phân cấp vì thế chúng ta có thể biểu
diễn dữ liệu trong XML theo cấu trúc cây Cấu trúc này
có ưu điểm là chúng ta có thể xác định được các mối
Trang 4Mô hình đối tượng XML
Mô hình đối tượng: Mô hình đối tượng XML là tập hợp các
đối tượng dùng để truy xuất và thao tác với các dữ liệu trong
XML Trong mô hình này dữ liệu cũng được tổ chức thành
dạng cấu trúc cây cùng với các nút Các đối tượng có nhiều
thuộc tính và phương thức để chúng ta có thể quét cấu trúc
cây XMLvà các phần tử trong cây.
Đọ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 một node bất kỳ
Trong cấu trúc DOM thì: root là document node,
các thẻ là element node, thuộc tính là attribute
node, inner text là text node,…
Trang 5Ví dụ DOM
Các thao tác
Bắt đầu với đối tượng XmlDocument (lấy nguyên
nội dung xml và parse sang mô hình xml DOM
lưu trong bộ nhớ)
Lấy node root
XmlNode nodeRoot = doc.DocumentElement;
Trang 6Các node con
Phương thức cơ bản
Lưu ý XmlNode là lớp cơ sở của các dẫn xuất:
XmlElement, XmlAttribute, XmlText,…
Các phương thức cơ bản
Trang 7Minh họa
Ví dụ lấy giá trị thuộc tính của 1 node
Trang 8Nội dung
XML cơ bản
GDI+
Custom Controls
GDI+
GDI: Graphical Device Interface
GDI+ là API (Application programming interface)
cung cấp các lớp cho phép
Tạo những đồ họa 2D vector
Thao tác trên font, chuỗi ký tự
Hiển thị các đường, hình và ảnh…
Thư viện FCL chứa các lớp thao tác vẽ trong
namespace System.Drawing
Trang 9Kiến trúc
System.Drawing
Font
Graphics
Icon
Pen
Region
Image
Brush
HatchBrush LinearGradientBrush PathGradientBrush SolidBrush TextureBrush
Color Point Rectangle Size
structure class
Graphics
Class Graphics thể hiện
“Abstract” drawing surface
Tập hợp những “tool” cho phép thao tác trên
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 vì OnPaint()
Trang 10Lấy đối tượng Graphics từ tham số
protected override void
OnPaint(PaintEventArgs paintevent)
{
Graphics graf=paintevent.Graphics;
}
private void mainForm_Paint(object sender,
PaintEventArgs paintevent)
{
Graphics graf=paintevent.Graphics;
}
Từ tham số PaintEventAtgs
Lấy đối tượng Graphics từ control, image
private void PaintMe(Control testcontrol)
{
Graphics graf=testcontrol.CreateGraphics();
}
protected override void
OnPaint(PaintEventArgs paintevent)
Lấy từ control
Trang 11 Pen
Xác định width, style, fill style
Không cho kế thừa, nhưng tạo thể hiện được
Trong namespace System.Drawing
Pen p1 = new Pen(Color.Green);
Pen p2 = new Pen(Color.blue, 10);
Sử dụng lớp Penscó 141 pen được định nghĩa
trước
Pen p3 = Pens.Violet;
Brush
Brush
Dùng để tô vùng bên trong của hình
Class Brush là class abstract nên không tạo thể
hiện
Sử dụng các lớp kế thừa sau để tạo brush
SolidBrush
LinearGradientBrush
TextureBrush
HatchBrush
Sử dụng lớp Brushes định nghĩa trước các brush
Trang 12Vẽ, tô cơ bản
Các phương thức vẽ cơ bản
DrawString
DrawLine
DrawRectangle
DrawEllipse
DrawImage
Các phương thức tô cơ bản
FillRectangle
FillEllipse
Tọa độ
Tọa độ hệ thống
Gốc tọa độ
(0,0) (w 1 ,0)
(0,h 1 ) (w 1 ,h 1 )
Form,
Control
Trang 13Ví dụ
Ví dụ cơ bản
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ụ cơ bản
Trang 14Ví dụ (tt)
Ví dụ cơ bản
Ví dụ (tt)
Ví dụ cơ bản
Trang 15Ví dụ (tt)
Ví dụ cơ bản
LinearGradient
Texture
Ví dụ (tt)
Ví dụ cơ bản
Trang 16Ví dụ (tt)
Ví dụ cơ bản
Ellipse được vẽ lên ảnh, rồi sau
đó với vẽ ảnh lên Form
Nội dung
XML cơ bản
GDI+
Custom Controls
Trang 17Custom Controls
User Controls (Composite)
ProgressBar có status
Derived Controls
TextBox chỉ 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