Bài giảng Hướng dẫn lập trình VB.NET - Chương 16: Xử lý đồ họa và các hiệu ứng ảnh động - Phạm Đức Lập

Nội dung thảo luận:

- Sử dụng thư viện hay không gian tên System.Drawing để vẽ ảnh đồ họa

- Tạo hiệu ứng ảnh động trên form

- Co giãn đối tượng trên form

- Tạo một form trong suốt (transparency)

VB.NET cung cấp đủ công cụ và thư viện để khai thác các hiệu ứng đồ họa. Trong chương

này chúng ta sẽ khám phá việc tạo các form mang dáng dấp đồ họa, tạo hiệu ứng ảnh động

dựa vào PictureBox và bộ định thời Timer, co giãn các đối tượng dựa vào thuộc tính

Height và Width.

Chú ý:

 VB.NET sử dụng các hàm đồ họa trong thư viện GDI+ chứa trong System.Drawing

để vẽ các hình đơn giản như đường thẳng, đường tròn

 Hệ thống đồ họa trong VB.NET chỉ là điểm Pixel

 VB.NET không hỗ trợ phương thức Move, thay vào đó bạn sẽ sử dụng các thuộc tính

Left, Top hay Location, SetBound.

 Có thể làm việc với nhiều khuôn dạng ảnh như BMP, GIF, JPEG, WMF, TIFF

1. Thêm vào hình ảnh bằng cách sử dụng thư viện System.Drawing

Chương này chúng ta sẽ sử dụng các hàm API trong thư viện GDI+ để vẽ ảnh. Ta có thể tự

vẽ ảnh, thay đổi màu nền, màu cọ, kiểu chữ vẽ và tất cả mọi thứ.

Hệ thống tọa độ của form

Trong VB, mỗi form có một hệ thống tọa độ riêng. Gốc tọa độ bắt đầu từ góc trái trên của

form (dưới thanh tiêu đề). Đơn vị được tính bằng pixel.

Có hai trục, trục ngang là trục hoành – trục x, chiều hướng qua phải. Trục dọc, chiều

hương xuống dưới là trục tung – trục y. Một điểm trên form được xác định bởi cặp tọa độ

(x, y)

pdf 10 trang yennguyen 3560
Bạn đang xem tài liệu "Bài giảng Hướng dẫn lập trình VB.NET - Chương 16: Xử lý đồ họa và các hiệu ứng ảnh động - Phạm Đức Lập", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Hướng dẫn lập trình VB.NET - Chương 16: Xử lý đồ họa và các hiệu ứng ảnh động - Phạm Đức Lập

Bài giảng Hướng dẫn lập trình VB.NET - Chương 16: Xử lý đồ họa và các hiệu ứng ảnh động - Phạm Đức Lập
Hướng dẫn lập trình VB.NET Chương 16: Sử lý đồ họa và các hiệu ứng ảnh động 
Biên soạn: Phạm Đức Lập - 1 - Add: cnt-44-dh, VIMARU 
Chương 16: 
Xử lý đồ họa và các hiệu ứng ảnh động 
--------oOo-------- 
Nội dung thảo luận: 
- Sử dụng thư viện hay không gian tên System.Drawing để vẽ ảnh đồ họa 
- Tạo hiệu ứng ảnh động trên form 
- Co giãn đối tượng trên form 
- Tạo một form trong suốt (transparency) 
VB.NET cung cấp đủ công cụ và thư viện để khai thác các hiệu ứng đồ họa. Trong chương 
này chúng ta sẽ khám phá việc tạo các form mang dáng dấp đồ họa, tạo hiệu ứng ảnh động 
dựa vào PictureBox và bộ định thời Timer, co giãn các đối tượng dựa vào thuộc tính 
Height và Width. 
Chú ý: 
 VB.NET sử dụng các hàm đồ họa trong thư viện GDI+ chứa trong System.Drawing 
để vẽ các hình đơn giản như đường thẳng, đường tròn 
 Hệ thống đồ họa trong VB.NET chỉ là điểm Pixel 
 VB.NET không hỗ trợ phương thức Move, thay vào đó bạn sẽ sử dụng các thuộc tính 
Left, Top hay Location, SetBound. 
 Có thể làm việc với nhiều khuôn dạng ảnh như BMP, GIF, JPEG, WMF, TIFF 
1. Thêm vào hình ảnh bằng cách sử dụng thư viện System.Drawing 
Chương này chúng ta sẽ sử dụng các hàm API trong thư viện GDI+ để vẽ ảnh. Ta có thể tự 
vẽ ảnh, thay đổi màu nền, màu cọ, kiểu chữ vẽ và tất cả mọi thứ. 
Hệ thống tọa độ của form 
Trong VB, mỗi form có một hệ thống tọa độ riêng. Gốc tọa độ bắt đầu từ góc trái trên của 
form (dưới thanh tiêu đề). Đơn vị được tính bằng pixel. 
Có hai trục, trục ngang là trục hoành – trục x, chiều hướng qua phải. Trục dọc, chiều 
hương xuống dưới là trục tung – trục y. Một điểm trên form được xác định bởi cặp tọa độ 
(x, y). 
2. Lớp xử lý đồ họa System.Drawing.Graphics 
Lớp Graphics trong thư viện System.Drawing chứa các phương thức và thuộc tính để vẽ 
hình ảnh lên form. Các lớp khác bạn có thể tham khảo trong Help của VB.NET. 
Hướng dẫn lập trình VB.NET Chương 16: Sử lý đồ họa và các hiệu ứng ảnh động 
Biên soạn: Phạm Đức Lập - 2 - Add: cnt-44-dh, VIMARU 
Sau đây là các phương thức dùng vẽ đường hình học cơ bản có trong lớp Graphics: 
Đường hình học Phương thức Mô tả 
Đường thẳng Line Đường thẳng nối hai điểm 
Hình chữ nhật DrawRectangle Hình chữ nhật với 4 điểm 
Cung tròn DrawArc Đường cong nối dây cung hai điểm 
Vòng tròn/ Elipse DrawEllipse Vẽ hình Elip hay hình tròn 
Đa giác DrawPolygon Đa giác được vẽ từ một tập các điểm 
Đường cong DrawCurve Đường cong tự nhiên nối thành từ mảng các điểm 
Đường cong bezier DrawBezier Đường cong Bezier 
Ngoài ra còn có một số hàm tô đầy như là FillRectangle, FillEllipse, FillPolygon. 
Khi sử dụng các phương thức của system.Drawing.Graphics bạn cần tạo ra một thể hiện 
của biến lớp Graphics. Tiếp theo tạo ra các đối tượng bút vẽ (Pen), chổi vẽ (Brush) để xác 
định nét vẽ hình học sẽ dùng vẽ và tô. Đối tượng vẽ Pen được truyền như tham số cho các 
phương thức vẽ không cần đến tô màu. Đối tượng Brush được truyền như tham số cho các 
phương thức vẽ yêu cầu đến tô màu. Ví dụ như phương thức DrawLine sau sẽ vẽ đường 
thẳng nối hai điểm (20, 30) và (100, 80). Biến đối tượng GraphicsFun được khai báo có 
kiểu Graphics và biến đối tượng Pen mang tên PenColor được dùng để chỉ định nét vẽ và 
màu để vẽ đường thẳng: 
 Dim GraphicsFun As Graphics 
 Dim PenColor As New System.Drawing.Pen(System.Drawing.Color.Red) 
 GraphicsFun = Me.CreateGraphics 
 GraphicsFun.DrawLine(PenColor, 20, 30, 200, 80) 
 GraphicsFun.DrawLine(Pens.DarkViolet, 25, 35, 205, 85) 
Hướng dẫn lập trình VB.NET Chương 16: Sử lý đồ họa và các hiệu ứng ảnh động 
Biên soạn: Phạm Đức Lập - 3 - Add: cnt-44-dh, VIMARU 
2.1. Sử dụng sự kiện Paint của Form 
Nếu bạn đặt đoạn mã trên vào sự kiện Click của một button nào đó thì khi click nút đó sẽ 
có một đường thẳng được vẽ ra. Tuy nhiên nếu ta di chuyển một cửa sổ khác đè lên 
chương trình hay thay đổi kích thước của form thì đường thẳng sẽ biến mất. Muốn nó hiện 
diện thường xuyên thì bạn phải biết khi nào cần vẽ lại đường thẳng. VB cung cấp sự kiện 
Paint để thực hiện công việc này. Bất kỳ khi nào chương trình bị Windows xóa nội dung 
cửa sổ và yêu cầu vẽ lại, nó sẽ gọi đến phương thức Paint, vì thế muốn tất cả các hình ảnh 
trên form hiển thị thường trực bạn cần đặt nó trong sự kiện Paint này. 
Trong bài tập MyDrawShaps sau đây, chúng ta sẽ thực hành vẽ các đường cơ bản lên form 
sử dụng sự kiện Paint này. Bạn có thể di chuyển cửa sổ khác đè lên, thay đổi kích thước 
mà các hình không hề mất đi. 
2.2. Chương trình MyDrawShaps vẽ hình chữ nhật, đường thẳng và Ellipse 
Tạo mới một Solution và Add vào một dự án cùng tên MyDrawShaps 
Thay đổi kích thước Form lớn hơn, đặt thuộc tính Text của Form là My Draw Shaps 
Tạo thủ tục Form1_Paint bằng cách chọn Form1 Events trong danh sách Class Name của 
cửa sổ Code Editor, chọn Paint trong danh sách Method Name 
Nhập vào đoạn mã sau: 
 'Chuẩn bị biến cho phương thức đồ họa 
 Dim GraphicsFun As Graphics 
 GraphicsFun = Me.CreateGraphics 
 'Sử dụng bút vẽ màu đỏ để vẽ đường thẳng và Ellipse 
 Dim PenColor As New System.Drawing.Pen(Color.Red) 
 GraphicsFun.DrawLine(PenColor, 20, 30, 100, 80) 
 GraphicsFun.DrawEllipse(PenColor, 10, 120, 200, 160) 
 'Sử dụng chổi vẽ màu xanh vẽ hình chữ nhật 
 Dim BrushColor As New SolidBrush(Color.Green) 
 GraphicsFun.FillRectangle(BrushColor, 150, 10, 250, 100) 
Ghi chú mã: 
- Đoạn mã trên vẽ ba hình cơ bản là hình chữ nhật, đường thẳng và ellipse. 
- Hàm vẽ hình Ellipse yêu cầu nhập hình chữ nhật cơ bản chứa Ellipse với 4 điểm 
góc. 
Chạy chương trình: 
Bạn ấn F5 để chạy chương trình. 
Khi chương trình chạy, thủ tục Form1_Paint được triệu gọi và các hình xuất hiện. Bạn có 
thể thay đổi kích thước hay cho một cửa sổ khác đè lên mà không làm mất đi các hình trên 
đã vẽ. Kết quả: 
Hướng dẫn lập trình VB.NET Chương 16: Sử lý đồ họa và các hiệu ứng ảnh động 
Biên soạn: Phạm Đức Lập - 4 - Add: cnt-44-dh, VIMARU 
3. Thêm hoạt hình cho chương trình 
Trong phần này chúng ta sẽ khám phá một số hiệu ứng đơn giản như di chuyển vị trí ảnh 
trong PictureBox, phóng to, thu nhỏ ảnh kết hợp với bộ định thời Timer. 
3.1. Di chuyển một đối tượng trên form 
Như đã nói VB.NET không còn hỗ trợ phương thức Move như VB6. Thay vào đó bạn sử 
dụng thuộc tính Left, Top hay phương thức SetBounds để thay đổi vị trí, di chuyển và định 
lại kích thước cho đối tượng 
Thuộc tính / phương thức Mô tả 
Left Cho phép định tọa độ đỉnh góc trái trên cùng của đối tượng 
theo hướng ngang 
Top Định tọa độ đỉnh góc trái trên cùng của đối tượng theo hướng 
dọc 
Location Kết hợp của Left và Top 
SetBounds Thiết lập phạm vi (kích thước và vị trí cho đối tượng) 
Thuộc tính Left và Top được dùng nhiều nhất khi muốn thay đổi vị trí của đối tượng. Để 
thay đổi vị trí đối tượng theo chiều ngang, ta thay đổi hay gán lại giá trị cho Left. Ngược 
lại theo chiều dọc, thay đổi hay gán lại giá trị cho Top. Ví dụ: 
Để di chuyển đối tượng PictureBox1 sang ngang 300 bạn cộng Left của nó lên 300: 
 PictureBox1.Left = PictureBox1.Left + 300 
Hướng dẫn lập trình VB.NET Chương 16: Sử lý đồ họa và các hiệu ứng ảnh động 
Biên soạn: Phạm Đức Lập - 5 - Add: cnt-44-dh, VIMARU 
Để di chuyển đối tượng PictureBox1 sang trái 300, trừ Left của nó đi 300: 
 PictureBox1.Left = PictureBox1.Left - 300 
Để di chuyển theo chiều dọc lên trên 300, cộng Top lên 300: 
 PictureBox1.Top = PictureBox1.Top + 300 
Để di chuyển xuống dưới 300, trừ Top đi 300: 
 PictureBox1.Top = PictureBox1.Top - 300 
Nếu muốn định vị chính xác thuộc tính Top và Left bạn có thể gán như sau: 
 PictureBox1.Top = 20 
 PictureBox1.Left = 30 
3.2. Thuộc tính Location 
Bạn cũng có thể sử dụng thuộc tính Location để định vị trí của đối tượng như sau: 
 Dim p As New Point(20, 30) 
 PictureBox1.Location = p 
3.3. Tạo hiệu ứng hoạt hình dựa vào đối tượng Timer 
Hiệu ứng hoạt hình dựa vào mẹo là, cứ sau một khoàng thời gian nào đó rất ngắn ta lại 
thay đổi vị trí của đối tượng ảnh. Trong bài tập MyMovingIcon sau đây chúng ta sẽ sử 
dụng đối tượng Timer để định thời gian di chuyển cho đối tượng ảnh chiếc ô tô (bạn có thể 
lấy bất cứ ảnh nào mình thích, miễn là dung lượng đủ nhỏ để chương trình chạy không quá 
chậm). 
Tìm hiểu chương trình: 
Chương trình có hai nút là “Lên trên” và “Xuống dưới” cùng một PictureBox. Khi người 
dùng click vào một trong hai nút thì ảnh chiếc ô tô sẽ tự động di chuyển theo chiều đó. 
Thiết kế giao diện: 
Hướng dẫn lập trình VB.NET Chương 16: Sử lý đồ họa và các hiệu ứng ảnh động 
Biên soạn: Phạm Đức Lập - 6 - Add: cnt-44-dh, VIMARU 
Bạn tạo mới một Solution và add vào một dự án cùng tên là MyMovingIcon rồi thiết kế 
giao diện như hình. Trong đó các đối tượng có thuộc tính như sau: 
- Form1: Text – “MyMovingIcon” 
- Button1: Name – btnLentren, Text – “Lên trên” 
- Button2: Name – btnXuongduoi, Text – “Xuống dưới” 
- PictureBox1: SizeMode – StretchImage, Image – một ảnh Icon bất kỳ mà bạn 
thích 
- Timer1: Enable – False 
Viết mã: 
Trước hết chúng ta sẽ khai báo một biến có tên là lentren kiểu Boolean ở dưới dòng khai 
báo Form1 để nhận lệnh lên trên hay xuống dưới. Nếu người dùng click vào nút “Lên trên” 
thì biến letren = true và ngược lại khi click vào nút “Xuống dưới” thì lentren = False: 
 Dim lentren As Boolean 
Tiếp theo ta tạo thủ tục Timer1_Tick để tạo hiệu ứng di chuyển ảnh. Bạn double – click 
vào đối tượng Timer1 để tạo thủ tục này và nhập vào đoạn mã như sau: 
 If lentren = True Then 
 'Di chuyển ảnh lên trên 
 If PictureBox1.Top > 10 Then 
 PictureBox1.Location = New Point _ 
 (PictureBox1.Location.X - Int(Rnd() * 5), _ 
 PictureBox1.Location.Y - Int(Rnd() * 5)) 
 End If 
 Else 
 'Di chuyển ảnh xuống dưới 
 If PictureBox1.Top < (Me.Size.Height - 75) Then 
 PictureBox1.Location = New Point _ 
 (PictureBox1.Location.X + 10, _ 
 PictureBox1.Location.Y + 10) 
 End If 
 End If 
Khi Timer hoạt động (thuộc tính Enable = True) thì sau khoảng 75 / 1000 giây, thủ tục 
Timer_Tick sẽ được gọi và nó tiến hành kiểm tra vị trí của PictureBox1 để thực thi hành 
động dịch chuyển tương ứng. 
Bây giờ ta tạo thủ tục btnLentren_Click như sau: 
 lentren = True 
 Timer1.Enabled = True 
Thủ tục btnXuongduoi_Click: 
 lentren = False 
 Timer1.Enabled = True 
Để có thể sinh số ngẫu nhiên ta tạo thủ tục Form1_Load và nhập dòng mã sau: 
 Randomize() 
Hướng dẫn lập trình VB.NET Chương 16: Sử lý đồ họa và các hiệu ứng ảnh động 
Biên soạn: Phạm Đức Lập - 7 - Add: cnt-44-dh, VIMARU 
Chạy chương trình: 
Bạn ấn F5 để chạy chương trình. Ấn nút “Lên trên” và xem ảnh di chuyển lên trên. Ấn 
“Xuống dưới” để xem ảnh di chuyển xuống dưới: 
4. Phóng to, thu nhỏ đối tượng khi chương trình đang thực thi 
Bạn cũng có thể sử dụng thuộc tính Height và Width để thay đổi chiều cao, chiều rộng của 
đối tượng để đối tượng có thể phóng to, thu nhỏ hay co giãn được. Bây giờ chúng ta sẽ 
chỉnh sửa bài tập MyMovingIcon để có thể minh họa cách phóng to, thu nhỏ của đối tượng 
PictureBox1. 
Làm theo các bước sau đây: 
- Mở lại Solution MyMovingIcon nếu đã đóng nó. 
- Trở lại cửa sổ thiết kế giao diện và tạo thêm ba nút nhấn mới là 
btnDungdichuyen – Nút nhấn tạm dừng di chuyển nếu Icon đang đi chuyển theo 
lệnh; btnPhongto – Nút nhấn cho phép phóng to ảnh; btnThunho – Nút nhấn cho 
phép thu nhỏ ảnh. 
- Ta cũng sẽ tạo thêm thủ tục PictureBox1_Click cho phép phóng to ảnh khi người 
dùng click lên ảnh khi chương trình đang thực thi. 
Giao diện của Solution sau khi chỉnh sửa sẽ như sau: 
Hướng dẫn lập trình VB.NET Chương 16: Sử lý đồ họa và các hiệu ứng ảnh động 
Biên soạn: Phạm Đức Lập - 8 - Add: cnt-44-dh, VIMARU 
Viết mã: 
Tạo thủ tục btnDungdichuyen_Click: 
 Timer1.Enabled = False 
Thủ tục này sẽ thiết lập lại thuộc tính Enable của Timer1 là False để dừng việc di chuyển 
ảnh. 
Tạo thủ tục PictureBox1_Click phóng to ảnh nếu người dùn click vào ảnh: 
 PictureBox1.Height = PictureBox1.Height + 15 
 PictureBox1.Width = PictureBox1.Width + 15 
Thủ tục này tăng các giá trị chiều cao (Height) và chiều rộng (Width) của PictureBox1 lên 
để ảnh trong nó co giãn theo. 
Thủ tục btnPhongto_Click phóng to ảnh: 
 PictureBox1.Height = PictureBox1.Height + 15 
 PictureBox1.Width = PictureBox1.Width + 15 
Thủ tục btnThunho_Click thu nhỏ ảnh: 
 PictureBox1.Height = PictureBox1.Height - 15 
 PictureBox1.Width = PictureBox1.Width - 15 
Thủ tục này tiến hành ngược lại với thủ tục phóng to, nó sẽ trừ giá trị chiều cao và chiều 
rộng của PictureBox1 đi để ảnh co lại. 
Bây giờ chương trình đã sẵn sàng để bạn chạy thử. 
Chạy chương trình: 
Ấn F5 để chạy chương trình. Bạn có thể ấn đồng thời hai nút lên trên và xuống dưới để 
xem ảnh di chuyển theo hai phương khác nhau. 
Hướng dẫn lập trình VB.NET Chương 16: Sử lý đồ họa và các hiệu ứng ảnh động 
Biên soạn: Phạm Đức Lập - 9 - Add: cnt-44-dh, VIMARU 
Khi ảnh di chuyển đến giữa form, bạn click vào nút dừng di chuyển để ảnh định vị giữa 
form và cho phóng to, thu nhỏ ảnh. Kết quả: 
5. Tạo cửa sổ Form trong suốt 
Sau đây chúng ta sẽ tạo hiệu ứng trong suốt (transparency) cho cửa sổ form. Bạn mở lại 
Solution MyMovingIcon nếu đã đóng nó. Bạn tạo thêm hai nút nhấn là btnTrongsuot – nút 
nhấn tạo độ trong suốt cho Form và nút btnMacdinh – nút nhấn đưa form trở về trạng thái 
ban đầu. 
Hướng dẫn lập trình VB.NET Chương 16: Sử lý đồ họa và các hiệu ứng ảnh động 
Biên soạn: Phạm Đức Lập - 10 - Add: cnt-44-dh, 
VIMARU 
Viết mã: 
Tạo thủ tục btnTrongsuot_Click tạo độ trong suốt: 
 Me.Opacity = 0.5 
Thủ tục btnMacdinh_Click đưa trạng thái form trở về như cũ: 
 Me.Opacity = 1 
Chạy chương trình: 
Ấn F5 để chương trình chạy. Bạn ấn nút nhấn “Trong suốt” để form trong suốt. Kết quả: 
6. Tổng kết chương 16 
Bạn làm bảng tổng kết những gì đã học trong chương 16 này và làm lại các bài tập theo ý 
thích của bạn. 
Bạn có thể kết hợp với môn xử lý ảnh hay đồ họa máy tính để có những bài tập thực sự 
hữu ích. Trong thời gian tới tôi sẽ đưa mã nguồn một số bài tập xử lý ảnh cũng như mô 
phỏng chương trình Paint của Windows, chương trình vẽ giúp bé học tập. Mong các bạn 
đón đọc. 

File đính kèm:

  • pdfbai_giang_huong_dan_lap_trinh_vb_net_chuong_16_xu_ly_do_hoa.pdf