Bài giảng Lập trình hướng đối tượng - Chương 7: Tương tác với người dùng trong ứng dụng C#
Chương 7
Tương tác với người dùng trong ứng dụng C#
7.0 Dẫn nhập
7.1 Tổng quát về tương tác giữa người dùng & chương trình
7.2 Đối tượng vẽ và cơ chế vẽ nội dung
7.3 Xuất chuỗi văn bản
7.4 Xuất ảnh bitmap
7.5 Xuất hình ₫ồ họa toán học
7.6 Thí dụ viết ứng dụng vẽ ₫ối tượng phức hợp
7.7 Xây dựng ₫ối tượng giao diện có hình dạng tùy ý
7.8 Kết chương
Môn : Lập trình hướng ₫ối tượng
Chương 7 : Tương tác với người dùng trong ứng dụng C#
Slide 1
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
7.0 Dẫn nhập
Chương này giới thiệu cách thức tương tác giữa người dùng và
chương trình ₫ể nhập/xuất dữ liệu.
Chương này cũng giới thiệu các ₫ối tượng giao diện cùng các tác
vụ xuất dữ liệu dạng chuỗi, dạng bitmap, dạng hình ₫ồ họa toán
học. Kết hợp 3 loại dữ liệu này, ta có thể tạo kết xuất bất kỳ.
Môn : Lập trình hướng ₫ối tượng
Chương 7 : Tương tác với người dùng trong ứng dụng C#
Slide 2
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
7.1 Tổng quát về tương tác người dùng/chương trình
Trong lúc chương trình chạy, nó thường phải tương tác với người
dùng. Sự tương tác gồm 2 hoạt ₫ộng chính :
. chờ nhận dữ liệu do người dùng cung cấp hay chờ nhận lệnh
của người dùng ₫ể thực thi 1 chức năng nào ₫ó.
. hiển thị thông báo và/hoặc kết quả tính toán ra màn hình/máy
in ₫ể người dùng biết và sử dụng.
Sự tương tác giữa người dùng và máy tính ₫ược thực hiện thông
qua các thiết bị nhập/xuất (thiết bị I/O - input/output) như bàn
phím/chuột ₫ể nhập dữ liệu hay lệnh, màn hình/máy in ₫ể xuất kết
quả hay thông báo...
Hiện có hàng trăm hãng chế tạo thiết bị I/O, mỗi hãng chế tạo rất
nhiều model của cùng 1 thiết bị (td. hãng HP chế rất nhiều model
máy in phun mực, máy in laser,...). Mỗi model thiết bị của từng
hãng có những tính chất vật lý riêng và khác với các model khác.
Môn : Lập trình hướng ₫ối tượng
Chương 7 : Tương tác với người dùng trong ứng dụng C#
Slide 3
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
7.1 Tổng quát về tương tác người dùng/chương trình
Để giúp người lập trình truy xuất các thiết bị I/O dễ dàng, ₫ộc lập
với tính chất phần cứng của thiết bị, HĐH Windows và VC# ₫ã che
dấu mọi tính chất phần cứng của các thiết bị và cung cấp cho người
lập trình 1 giao tiếp sử dụng duy nhất, ₫ộc lập với thiết bị : người
dùng sẽ tương tác với chương trình thông qua các ₫ối tượng giao
diện :
. người dùng ra lệnh bằng cách kích hoạt sự kiện xác ₫ịnh của 1
₫ối tượng giao diện. Thí dụ click chuột vào button "Bắt ₫ầu giải"
₫ể ra lệnh chương trình giải dùm phương trình bậc 2 có 3 tham
số a, b, c ₫ã nhập.
. nhập giá trị ₫úng/sai thông qua chọn/cấm chọn RadioButton
hay checkbox.
Môn : Lập trình hướng ₫ối tượng
Chương 7 : Tương tác với người dùng trong ứng dụng C#
Slide 4
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
7.1 Tổng quát về tương tác người dùng/chương trình
. nhập chọn lựa 1/n thông qua chọn RadioButton tương ứng
trong GroupBox, hay chọn mục tương ứng trong Listbox,
ComboBox.
. nhập số nguyên, số thực, chuỗi thông qua TextBox...
. xuất kết quả ra màn hình thông qua các ₫ối tượng RadioButton,
Checkbox, TextBox, ListBox, ComboxBox, TreeView...
Trong trường hợp cần xuất kết quả phức tạp bất kỳ, ta xem nó như
là tập hợp nhiều chuỗi văn bản, nhiều phần tử ảnh bitmap, nhiều
phần tử ₫ồ họa toán học như hình chữ nhật, hình tròn,... Xuất kết
quả phức tạp là quá trình lặp vẽ từng phần tử cấu thành kết quả
phức tạp.
Môn : Lập trình hướng ₫ối tượng
Chương 7 : Tương tác với người dùng trong ứng dụng C#
Slide 5
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
7.2 Đối tượng vẽ và cơ chế vẽ nội dung
Các ₫ối tượng Form, PictureBox, Printer cho phép vẽ nội dung bất
kỳ lên chúng.
Mỗi lần cần vẽ lại nội dung của ₫ối tượng (lúc bắt ₫ầu hiển thị, lúc
thay ₫ổi vị trí, kích thước của ₫ối tượng), máy sẽ tạo sự kiện Paint,
sự kiện này sẽ kích hoạt hàm xử lý tương ứng của ₫ối tượng. Như
vậy, nếu muốn vẽ thông tin chi tiết lên ₫ối tượng, người lập trình
phải ₫ịnh nghĩa hàm xử lý sự kiện Paint của ₫ối tượng và hiện
thực thuật giải ₫ể vẽ chi tiết thông tin lên ₫ối tượng.
Khi cần thiết, người lập trình có thể gọi tác vụ Refresh() của ₫ối
tượng ₫ể nhờ máy tạo dùm sự kiện Paint hầu vẽ lại ₫ối tượng.
Môn : Lập trình hướng ₫ối tượng
Chương 7 : Tương tác với người dùng trong ứng dụng C#
Slide 6
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
7.2 Đối tượng vẽ và cơ chế vẽ nội dung
Template của hàm xử lý sự kiện Paint của ₫ối tượng như sau :
private void Form1_Paint(object sender, PaintEventArgs e) {
//xác ₫ịnh ₫ối tượng mục tiêu
Control control = (Control)sender;
//thay ₫ổi kích thước, vị trí nếu cần
//xác ₫ịnh ₫ối tượng graphics (₫ối tượng vẽ) của ₫ối tượng
Graphics g = e.Graphics;
//gọi các tác vụ vẽ của ₫ối tượng vẽ như DrawImage,
//DrawString, DrawLine,... ₫ể xuất các thông tin bitmap,
//chuỗi văn bản, hình ₫ồ họa toán học.
}
Môn : Lập trình hướng ₫ối tượng
Chương 7 : Tương tác với người dùng trong ứng dụng C#
Slide 7
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
7.3 Xuất chuỗi văn bản
Đối tượng vẽ (graphics) cung cấp khoảng 70 tác vụ vẽ khác nhau,
mỗi tác vụ gồm nhiều biến thể (overloaded) ₫ể giúp ta ₫iều khiển
vẽ nội dung dễ dàng, tiện lợi. Ở ₫ây chúng ta chỉ giới thiệu 1 số tác
vụ phổ dụng.
Tác vụ DrawString cho phép xuất chuỗi văn bản theo ₫ịnh dạng
xác ₫ịnh. Nó có nhiều biến thể, biến thể khá mạnh và dùng phổ
biến có ₫ặc tả như sau :
public void DrawString (
string s,
Font font,
Brush brush,
float x,
//chuỗi cần xuất
//các tính chất font chữ cần dùng ₫ể vẽ
//màu vẽ chuỗi
//toạ ₫ộ x của ₫iểm canh lề chuỗi
//tọa ₫ộ y của ₫iểm canh lề chuỗi
float y,
StringFormat format); //thuộc tính ₫iều khiển vẽ chuỗi
Khoa Khoa học & Kỹ thuật Máy tính
Môn : Lập trình hướng ₫ối tượng
Chương 7 : Tương tác với người dùng trong ứng dụng C#
Slide 8
Trường ĐH Bách Khoa Tp.HCM
© 2010
7.3 Xuất chuỗi văn bản
Thí dụ ta có biến now miêu tả thông tin thời ₫iểm hiện hành, ta có
thể viết ₫oạn code sau ₫ể rút trích thông tin từbiến now và xuất
thông tin giờ/phút/giây ra giữa form ứng dụng :
//tạo chuỗi miêu tả giờ/phút/giây hiện hành
String buf = "" + now.Hour + ":" + now.Minute + ":" + now.Second;
//tạo ₫ối tượng font chữ cần dùng
Font myFont = new Font("Helvetica", 11);
//tạo biến miêu tả chế ₫ộ canh giữa khi xuất chuỗi
StringFormat format1 = new StringFormat(StringFormatFlags.NoClip);
format1.Alignment = StringAlignment.Center;
//xuất chuỗi miêu tả giờ/phút/giây
g.DrawString(buf, myFont, System.Drawing.Brushes.Blue,
xo, rec.Height - 35, format1);
Môn : Lập trình hướng ₫ối tượng
Chương 7 : Tương tác với người dùng trong ứng dụng C#
Slide 9
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
7.4 Xuất ảnh bitmap
Tác vụ DrawImage cho phép vẽ bitmap từnguồn có sẵn, thí dụ từ
file bitmap. Nó có nhiều biến thể, biến thể khá mạnh và dùng phổ
biến có ₫ặc tả như sau :
public void DrawImage (
Image image,
Rectangle destRect,
//₫ối tượng chứa ảnh bitmap gốc
//vùng chữ nhật chứa kết quả
//trong ₫ối tượng vẽ
int srcX,
int srcY,
int srcWidth,
int srcHeight,
GraphicsUnit srcUnit,
//tọa ₫ộ x của vùng ảnh gốc
//tọa ₫ộ y của vùng ảnh gốc
//₫ộ rộng vùng ảnh gốc cần vẽ
//₫ộ cao vùng ảnh gốc cần vẽ
//₫ơn vị ₫o lường ₫ược dùng
ImageAttributes imageAttr) //cách thức xử lý từng pixel
//ảnh gốc khi vẽ
Môn : Lập trình hướng ₫ối tượng
Chương 7 : Tương tác với người dùng trong ứng dụng C#
Slide 10
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
7.4 Xuất ảnh bitmap
srcX, srcY, srcWidth, srcHeight
destRect
Image
Môn : Lập trình hướng ₫ối tượng
Khoa Khoa học & Kỹ thuật Máy tính
Chương 7 : Tương tác với người dùng trong ứng dụng C#
Slide 11
Trường ĐH Bách Khoa Tp.HCM
© 2010
7.5 Xuất hình ₫ồ họa - Tác vụ DrawLine
Tác vụ DrawLine cho phép vẽ ₫oạn thẳng ₫ược xác ₫ịnh bởi 2
₫ỉnh. Nó có nhiều biến thể, biến thể khá mạnh và dùng phổ biến
có ₫ặc tả như sau :
public void DrawLine (
Pen pen, //miêu tả nét, màu ₫ường vẽ
int x1,
int y1,
int x2,
int y2);
//tọa ₫ộ x của ₫iểm ₫ầu
//tọa ₫ộ y của ₫iểm ₫ầu
//tọa ₫ộ x của ₫iểm cuối
//tọa ₫ộ y của ₫iểm cuối
Trước khi gọi DrawLine, phải tạo ₫ối tượng Pen miêu tả nét, màu
của ₫ường vẽ :
//tạo pen với màu Blue, nét vẽ 2 pixel
Pen pen = new Pen(Color.FromArgb(0,0, 255), 2);
Môn : Lập trình hướng ₫ối tượng
Chương 7 : Tương tác với người dùng trong ứng dụng C#
Slide 12
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
7.5 Xuất hình ₫ồ họa - Tác vụ DrawLines
Tác vụ DrawLines cho phép vẽ nhiều ₫oạn thẳng liên tiếp nhau
₫ược xác ₫ịnh bởi danh sách các ₫ỉnh. Nó có nhiều biến thể, biến
thể khá mạnh và dùng phổ biến có ₫ặc tả như sau :
public void DrawLines (
Pen pen,
//miêu tả nét, màu ₫ường vẽ
Point[] points); //danh sách các ₫ỉnh
Trước khi gọi DrawLines, phải tạo ₫ối tượng Pen miêu tả nét, màu
của ₫ường vẽ :
//tạo pen với màu Blue, nét vẽ 2 pixel
Pen pen = new Pen(Color.FromArgb(0,0, 255), 2);
Môn : Lập trình hướng ₫ối tượng
Chương 7 : Tương tác với người dùng trong ứng dụng C#
Slide 13
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
7.5 Xuất hình ₫ồ họa - Tác vụ DrawRectangle
Tác vụ DrawRectangle cho phép vẽ hình chữ nhật ₫ược xác ₫ịnh
bởi 2 ₫ỉnh chéo nhau. Nó có nhiều biến thể, biến thể khá mạnh và
dùng phổ biến có ₫ặc tả như sau :
public void DrawRectangle (
Pen pen, //miêu tả nét, màu ₫ường vẽ
int x1,
int y1,
int x2,
int y2)
//tọa ₫ộ x của ₫iểm ₫ầu
//tọa ₫ộ y của ₫iểm ₫ầu
//tọa ₫ộ x của ₫iểm cuối
//tọa ₫ộ y của ₫iểm cuối
Lưu ý tác vụ DrawRectangle chỉ vẽ ₫ường biên, muốn tô nền hình
chữ nhật, ta cần gọi tác vụ FillRectangle (₫ặc tả giống như tác vụ
DrawRectangle), chỉ khác là tham số ₫ầu là ₫ối tượng mẫu tô :
//tạo brush với màu ₫ỏ, tô ₫ặc
Brush brush = new SolidBrush(Color.FromArgb(255, 0, 0));
Môn : Lập trình hướng ₫ối tượng
Chương 7 : Tương tác với người dùng trong ứng dụng C#
Slide 14
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
7.5 Xuất hình ₫ồ họa - Tác vụ DrawEllipse
Tác vụ DrawEllipse cho phép vẽ hình ellipse ₫ược xác ₫ịnh bởi
hình chữ nhật bao quanh nó. Nó có nhiều biến thể, biến thể khá
mạnh và dùng phổ biến có ₫ặc tả như sau :
public void DrawEllipse (
Pen pen, //miêu tả nét, màu ₫ường vẽ
int x1,
int y1,
int x2,
int y2)
//tọa ₫ộ x của ₫iểm ₫ầu
//tọa ₫ộ y của ₫iểm ₫ầu
//tọa ₫ộ x của ₫iểm cuối
//tọa ₫ộ y của ₫iểm cuối
Lưu ý tác vụ DrawEllipse chỉ vẽ ₫ường biên, muốn tô nền hình
ellipse, ta cần gọi tác vụ FillEllipse (₫ặc tả giống như tác vụ
DrawEllipse), chỉ khác là tham số ₫ầu là ₫ối tượng mẫu tô :
//tạo brush với màu ₫ỏ, tô ₫ặc
Brush brush = new SolidBrush(Color.FromArgb(255, 0, 0));
Môn : Lập trình hướng ₫ối tượng
Chương 7 : Tương tác với người dùng trong ứng dụng C#
Slide 15
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
7.5 Xuất hình ₫ồ họa - Tác vụ DrawArc
Tác vụ DrawArc cho phép vẽ 1 phần ₫ường ellipse ₫ược xác ₫ịnh
bởi hình chữ nhật bao quanh nó. Nó có nhiều biến thể, biến thể
khá mạnh và dùng phổ biến có ₫ặc tả như sau :
public void DrawArc (
Pen pen,
Rectangle rect,
//miêu tả nét, màu ₫ường vẽ
//miêu tả hình chữ nhật ngoại tiếp
float startAngle, //góc bắt ₫ầu (theo chiều kim ₫ồng hồ)
float sweepAngle ) //₫ộ lớn phần ₫ường ellipse cần vẽ
Lưu ý tác vụ DrawArc chỉ vẽ ₫ường biên, không có tác vụ FillArc
₫ể tô nền.
Môn : Lập trình hướng ₫ối tượng
Chương 7 : Tương tác với người dùng trong ứng dụng C#
Slide 16
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
7.5 Xuất hình ₫ồ họa - Tác vụ DrawPie
Tác vụ DrawPie cho phép vẽ 1 phần bánh ellipse ₫ược xác ₫ịnh bởi
hình chữ nhật bao quanh nó. Nó có nhiều biến thể, biến thể khá
mạnh và dùng phổ biến có ₫ặc tả như sau :
public void DrawPie (
Pen pen,
//miêu tả nét, màu ₫ường vẽ
Rectangle rect,
//miêu tả hình chữ nhật ngoại tiếp
float startAngle, //góc bắt ₫ầu (theo chiều kim ₫ồng hồ)
float sweepAngle ) //₫ộ lớn phần bánh ellipse cần vẽ
Lưu ý tác vụ DrawPie chỉ vẽ ₫ường biên, muốn tô nền bánh ellipse,
ta cần gọi tác vụ FillPie (₫ặc tả giống như tác vụ DrawPie), chỉ
khác là tham số ₫ầu là ₫ối tượng mẫu tô :
//tạo brush với màu ₫ỏ, tô ₫ặc
Brush brush = new SolidBrush(Color.FromArgb(255, 0, 0));
Môn : Lập trình hướng ₫ối tượng
Chương 7 : Tương tác với người dùng trong ứng dụng C#
Slide 17
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
7.5 Xuất hình ₫ồ họa - Tác vụ DrawPolygon
Tác vụ DrawPolygon cho phép vẽ hình nhiều cạnh khép kín. Nó có
nhiều biến thể, biến thể khá mạnh và dùng phổ biến có ₫ặc tả như
sau :
public void DrawPolygon (
Pen pen,
//miêu tả nét, màu ₫ường vẽ
Point[] points) //danh sách các ₫ỉnh của polygon
Lưu ý tác vụ DrawPolygon chỉ vẽ ₫ường biên, muốn tô nền hình
polygon, ta cần gọi tác vụ FillPolygon (₫ặc tả giống như tác vụ
DrawPolygon), chỉ khác là tham số ₫ầu là ₫ối tượng mẫu tô :
//tạo brush với màu ₫ỏ, tô ₫ặc
Brush brush = new SolidBrush(Color.FromArgb(255, 0, 0));
Môn : Lập trình hướng ₫ối tượng
Chương 7 : Tương tác với người dùng trong ứng dụng C#
Slide 18
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
7.5 Xuất hình ₫ồ họa - Tác vụ DrawCurve
Tác vụ DrawCurve cho phép vẽ cong trơn xuyên qua nhiều ₫iểm
theo phép tension xác ₫ịnh. Nó có nhiều biến thể, biến thể khá
mạnh và dùng phổ biến có ₫ặc tả như sau :
public void DrawCurve (
Pen pen,
//miêu tả nét, màu ₫ường vẽ
Point[] points
int offset,
//danh sách các ₫ỉnh của polygon
//vị trí ₫iểm bắt ₫ầu vẽ trong danh sách
int numberOfSegments, //số ₫oạn cần vẽ
float tension); //phép tension ₫ược dùng
)
Môn : Lập trình hướng ₫ối tượng
Chương 7 : Tương tác với người dùng trong ứng dụng C#
Slide 19
Khoa Khoa học & Kỹ thuật Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
7.5 Xuất hình ₫ồ họa - Tác vụ DrawCurve
private void Form1_Paint(object sender, PaintEventArgs e) {
//tạo 2 bút vẽ cho ₫ường thẳng và cong
Pen redPen = new Pen(Color.Red, 3);
Pen greenPen = new Pen(Color.Green, 3);
//tạo các ₫ỉnh
Point point1 = new Point(10, 100), point2 = new Point(40, 75);
Point point3 = new Point(70, 125), point4 = new Point(100, 50);
Point point5 = new Point(130, 180), point6 = new Point(160, 40);
Point point7 = new Point(200, 100);
Point[] curvePoints = { point1, point2, point3, point4, point5, point6, point7 };
//vẽ các ₫oạn thẳng.
e.Graphics.DrawLines(redPen, curvePoints);
//thiết lập offset, số ₫oạn cong, và tension.
int offset = 0, numSegments = 6;
float tension = 0.5F;
//vẽ ₫ường cong trơn qua các ₫ỉnh.
e.Graphics.DrawCurve(greenPen, curvePoints, offset, numSegments, tension);
}
Môn : Lập trình hướng ₫ối tượng
Khoa Khoa học & Kỹ thuật Máy tính
Chương 7 : Tương tác với người dùng trong ứng dụng C#
Slide 20
Trường ĐH Bách Khoa Tp.HCM
© 2010
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình hướng đối tượng - Chương 7: Tương tác với người dùng trong ứng dụng C#", để 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_huong_doi_tuong_chuong_7_tuong_tac_voi_n.pdf

