Xử lý đối tượng đồ họa GDI+ trong vb.net

GDI+ là gì?
GDI+, tiền thân là GDI (Graphics Device Interface), là một tập hợp các lớp giao diện lập trình ứng dụng, cho phép thao tác với các đối tượng đồ họa trên các thiết bị xuất như màn hình và máy in. Đối với GDI, để truy cập thiết bị kết xuất, bạn phải dùng đối tượng Device context (DC). DC lưu trữ thông tin về thiết bị và chuyển các câu lệnh xử lý đồ họa thành các câu lệnh có thể xuất được trên thiết bị. Đối với GDI+, DC được đóng gói trong namespace có tên là System.Drawing.Graphics. Hầu hết các thao tác đối với đối tượng đồ họa đều được thực hiện thông qua đối tượng Graphics.
Đoạn mã 1 minh họa việc vẽ các đối tượng cơ bản như hình chữ nhật, hình tròn (H1).
Đoạn mã 1
Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Me.InitializeComponent()

‘khai báo một biến device context có kiểu là Graphics

Dim dc As Graphics = Me.CreateGraphics()

Show()

‘tạo ra một đối tựong bút vẽ
Dim bluePen As Pen = New Pen(Color.Blue, 3)

‘vẽ hình chữ nhật
dc.DrawRectangle(bluePen, 0, 0, 50, 50)

Dim redPen As Pen = New Pen(Color.Red, 2)
dc.DrawEllipse(redPen, 0, 50, 80, 60)

End Sub


H.1

Với đoạn mã 1, khi ta minimize cửa sổ và sau đó phục hồi lại cửa sổ thì những hình ta vẽ biến mất. Hoặc nếu ta di chuyển một cửa sổ nào đó qua cửa sổ chương trình của ta thì vùng bị che khuất bị xóa. Đó là vì ta vẽ hình chữ nhật và hình tròn trong hàm xây dựng lớp (constructor), ta không thể gọi hàm này lần nữa để vẽ lại các hình khi cần. Đoạn mã 2 dùng để vẽ lại vùng bị khuất của chương trình (nếu có) thông qua hàm xử lý sự kiện Paint. Bạn để ý, ta chỉ vẽ vùng thực sự cần vẽ lại chứ không vẽ lại toàn bộ. Để xác định vùng cần vẽ lại, ta dùng thuộc tính ClipRectangle của đối tượng System.Windows.Forms.PaintEventArgs:
Đoạn mã 2
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim dc As Graphics = e.Graphics()

If (e.ClipRectangle.Top < 132 And e.ClipRectangle.Left < 82) Then
Dim bluePen As Pen = New Pen(Color.Blue, 3)
dc.DrawRectangle(bluePen, 0, 0, 50, 50)
Dim redPen As Pen = New Pen(Color.Red, 2)
dc.DrawEllipse(redPen, 0, 50, 80, 60)
End If

End Sub

Bút vẽ và cọ vẽ
Bút vẽ (pen) dùng để cho đối tượng Graphics biết cách vẽ nét như thế nào. Cọ vẽ (brush) cho đối tượng Graphics biết cách tô màu một vùng như thế nào. Để tạo đối tượng bút vẽ (pen), ta khai báo như sau:
Dim penBlue as Pen = new Pen (Color. Blue, 3)
Trong đó, tham số thứ nhất là màu vẽ, tham số thứ hai là độ dày của nét vẽ. Sau đó ta dùng bút vẽ này để vẽ hình nào đó:
Dim dc as Graphics= new Me.CreateGraphics()
dc.DrawRectangle (penBlue, 0, 0, 100, 100)
Để tạo một cọ vẽ ta khai báo như sau:
Dim blueBrush as Brush= new Brush(Color.Blue)
Sau đó, bạn dùng cọ vẽ để tô màu các hình hình học:
‘Public Sub FillRectangleRectangle(e As PaintEventArgs)
‘ Create solid brush.
Dim blueBrush As New Brush(Color.Blue)
‘ Create rectangle.
Dim rect As New Rectangle(0, 0, 200, 200)
‘ Fill rectangle to screen.
e.Graphics.FillRectangle(blueBrush, rect)
End Sub
Hiển thị hình ảnh
Để hiển thị hình ảnh, ta dùng một số lớp trong namespace System.Drawing.Image. Câu lệnh sau hiển thị hình ảnh từ tập tin:
Dim myImage as Image= Image.FromFile(“Sample.gif”)
Dim dc as Graphics= Me.CreateGraphics()
dc.DrawImage(myImage, points)
Trong đó, tham số points là tọa độ điểm cần hiển thị hình ảnh.
Ngoài ra, có một cách hiển thị hình ảnh dễ dàng hơn nhiều: dùng đối tượng điều khiển Picture Box. Ta chỉ cần đưa Picture Box vào trong form và chỉ định tên tập tin hình ảnh cần hiển thị thông qua thuộc tính ImageLocation của Picture Box.

Theo Echip

About these ads

~ bởi duriangroup on Tháng Sáu 16, 2007.

 
Follow

Get every new post delivered to your Inbox.

Join 27 other followers

%d bloggers like this: