Bài giảng Lập trình Ứng dụng quản lý - Tuần 8: WinForm (Phần 3)
10/24/2018
Lập trình Ứng dụng quản lý
C#.NET
WinForm (tt)
Nội dung
XML cơ bản
GDI+
Custom Controls
1
10/24/2018
Nộ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)
2
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) 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
quan hệ giữa các phꢉn tử vꢆi nhau.
3
10/24/2018
Mô 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 XML và 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,…
4
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 và parse sang mô hình xml DOM
lưu trong bộ nhꢆ).
Lấy node root
XmlNode nodeRoot = doc.DocumentElement;
5
10/24/2018
Cá 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
6
10/24/2018
Minh họa
Ví dụ lấy giá trꢏ thuộc tính cꢋa 1 node
7
10/24/2018
Nội dung
XML cơ bản
GDI+
Custom Controls
GDI+
GDIGraphicaDevice 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 SystemDrawing
Tất cả các thao tác tô vẽ trên GUI đꢂu thực hiện
bởi chức năng GDI+
8
10/24/2018
Kiꢌn trúc
System.Drawing
Font
Color
Point
class
Graphics
Icon
structure
Rectangle
Size
Pen
Region
HatchBrush
Image
Brush
LinearGradientBrush
PathGradientBrush
SolidBrush
TextureBrush
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()
9
10/24/2018
Lấy đối tưꢁng Graphics tꢊ tham số
protected override void
OnPaint(PaintEventArgs paintevent)
{
Graphics grafntevent.Graphics;
}
Tꢊ tham số
PaintEvAtgs
private void maim_Paint(object sender,
PaintEventArgintevent)
{
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, 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 Pens cꢀ 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.
11
10/24/2018
Vẽ, 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,0)
(w,h)
(w1,0)
(0,0)
Control
(0,h1)
(w1,h1)
Form,
Panel,
GroupBox,
File Bitmap
….
(0,h)
12
10/24/2018
Ví dụ
Ví dụ cơ bản
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
gDrawString("Hello GDI!", Font, Brushes.Red, 20, 20);
}
}
Ví dụ (tt)
Ví dụ cơ bản
13
10/24/2018
Ví dụ (tt)
Ví dụ cơ bản
Ví dụ (tt)
Ví dụ cơ bản
14
10/24/2018
Ví dụ (tt)
Ví dụ cơ bản
Solid
Hatch
LinearGradient
Texture
Ví dụ (tt)
Ví dụ cơ bản
15
10/24/2018
Ví 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
16
10/24/2018
Custom 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.
17
Bạn đang xem tài liệu "Bài giảng Lập trình Ứng dụng quản lý - Tuần 8: WinForm (Phần 3)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_lap_trinh_ung_dung_quan_ly_tuan_6_c_net_winform_ph.pdf

