Tải bản đầy đủ (.pdf) (33 trang)

Lập trình trên môi trường WindowsGDI docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (422.83 KB, 33 trang )

Lập trình trên môi trường Windows
GDI+
Trần Duy Hoàng


Nội dung

Giới thiệu GDI+

Đối tượng Graphic

Các hàm vẽ

Các hàm tô màu

Pen

Brush

Invalidate

Tạo form có hình dạng
bất kỳ

Kỹ thuật chống flicker

Giới thiệu GDI+

Thực hiện vẽ trên môi trường .NET

Cung cấp tập namespace, lớp hướng đối tượng lớn


cho việc thực hiện vẽ

Device Context được thay thế bằng đối tượng
Graphic

Mỗi control đều có đối tượng Graphic để vẽ nó, bao
gồm Form, Button, TextBox, ….

Các namespace
Tên Mô tả
System.Drawing Định nghĩa những đối tượng vẽ cơ bản
(Fonts, Pens, Brushes, ) và đối tượng
Graphic
System.Drawing.Drawing2D Cung cấp những đối tượng vẽ vector 2
chiều như gradient brushes, gradient
pens,
System.Drawing.Image Thao tác với hình ảnh như thực hiện vẽ,
lấy thông tin kích thước ảnh, …
System.Drawing.Printing Thực hiện in; cung cấp những đối tượng
giao tác với printer
System.Drawing.Text Thực hiện vẽ với các font.

Đối tượng Graphic

Đối tượng quan trọng của GDI+

Mọi thao tác vẽ đều thực hiện trên đối tượng
Graphic

Mọi control đều có thuộc tính Graphic dùng để vẽ

chính nó

Có 2 cách truy xuất

Sự kiện Paint : e.Graphics.DrawLine( )

Hàm CreateGraphic() ảnh vẽ sẽ mất đi khi Form được
Reload

Đối tượng Graphic

Ví dụ
private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawRectangle(Pens.Blue, 10, 10, 100, 100);
}

Đối tượng Graphic

Danh sách các hàm vẽ
Hàm Ý nghĩa
DrawArc Vẽ hình cung ellipse
DrawEllipse Vẽ hình ellipse
DrawLine Vẽ đường thẳng
DrawPolygon Vẽ đa giác
DrawRectangle Vẽ hình chữ nhật
DrawString Vẽ chuổi
DrawImage Vẽ hình ảnh

Đối tượng Graphic


Ví dụ :
// tạo bút vẽ
Pen pen = new Pen(Color.Blue, 2);
// vẽ đường từ điểm 0, 0 đến 100, 100
e.Graphics.DrawLine(pen, 0, 0, 100, 100);

Đối tượng Graphic

Ví dụ :
// tạo bút vẽ
Pen pen = new Pen(Color.Blue, 2);
// vẽ hình ellipse nằm trong hình chữ nhật
// từ điểm 0,0 có độ rộng 300, cao 200
e.Graphics.DrawEllipse(pen, 0, 0, 300, 200);

Đối tượng Graphic

Ví dụ :
// tạo bút vẽ
Pen pen = new Pen(Color.Blue, 2);
// vẽ cung ellipse nằm trong hình chữ nhật
// từ điểm 0,0 có độ rộng 300, cao 200
// vẽ từ góc 90 độ vẽ tiếp 180 độ
e.Graphics.DrawArc(pen, 0, 0, 300, 200, 90, 180);

Đối tượng Graphic

Ví dụ :
// tạo bút vẽ

Pen pen = new Pen(Color.Blue, 2);
// vẽ hình chữ nhật từ điểm 0,0
// có độ rộng 300, cao 200
e.Graphics.DrawRectangle(pen, 10, 10, 300, 200);

Đối tượng Graphic

Ví dụ :
// tạo bút vẽ
Pen pen = new Pen(Color.Blue, 2);
// vẽ đa giác có 4 đỉnh 10,10 100,180
// 200,180 và 200,10
Point[] polygon = new Point[4];
polygon[0] = new Point(10, 10);
polygon[1] = new Point(100, 180);
polygon[2] = new Point(200, 180);
polygon[3] = new Point(200, 10);
e.Graphics.DrawPolygon(pen, polygon);

Đối tượng Graphic

Ví dụ :
// tạo bút vẽ
Pen pen = new Pen(Color.Blue, 2);
// vẽ hình bánh nằm trong hình chữ nhật
// từ điểm 0,0 có độ rộng 300, cao 200
// vẽ từ góc 0 độ vẽ tiếp 90 độ
e.Graphics.DrawPie(pen, 0, 0, 300, 200, 0, 90);

Đối tượng Graphic


Ví dụ :
// tạo bút vẽ
Pen pen = new Pen(Color.Blue, 2);
// tạo các điểm của đường cong
Point start = new Point(100, 100);
Point control1 = new Point(200, 50);
Point control2 = new Point(350, 100);
Point end = new Point(100, 300);
// vẽ đường cong
e.Graphics.DrawBezier(pen, start, control1, control2, end);

Đối tượng Graphic

Ví dụ :
// vẽ chuỗi tại vị trí 0,0
string text = "Hello world";
Font font = new Font("Arial", 16);
e.Graphics.DrawString(text, font, Brushes.Blue, 0, 0);
// vẽ hình tại vị trí 50,50
Bitmap image = new Bitmap("images/image1.jpg");
e.Graphics.DrawImage(image, 50, 50);

Đối tượng Graphic

Danh sách các hàm tô màu
Hàm Ý nghĩa
FillEllipse Tô hình ellipse
FillPie Tô hình bánh
FillPolygon Tô đa giác

FillRectangle Tô hình chữ nhật

Đối tượng Graphic

Ví dụ :
// Create solid brush.
SolidBrush blueBrush = new SolidBrush(Color.Blue);
// Fill rectangle to screen.
e.Graphics.FillRectangle(blueBrush, 0, 0, 200, 200);

Pen

Dùng Pen có sẵn thông qua Pens

Pens.AliceBlue

Pens.Aqua

Pens.Black

Pens.Brown



Dùng Pen do tự tạo thông qua lớp Pen
Pen pen = new Pen (Color.Red, 2)

Brush

Dùng Brush tự có


Brushes.Lavendar

Brushes.Ivory

Brushes.LightBlue

TextureBrush: dùng ảnh image để vẽ

SolidBrush:Tạo cọ với màu đơn sắc

Brush

Ví dụ : TextureBrush
Bitmap image = new Bitmap("images/image1.jpg");
TextureBrush texture = new TextureBrush(image);
e.Graphics.FillEllipse(texture, 100, 100, 400, 200);

Invalidate

Hành động Invalidate dùng để thực hiện vẽ lại Form
hoặc 1 vùng nào đó trên Form.

Sử dụng hàm : Invalidate
private void timer1_Tick(object sender, EventArgs e)
{
this.Invalidate();
}

Tạo form có hình dạng bất kỳ


Thuộc tính Region : xác định vùng hiển thị của form

Lớp GraphicsPath : dùng để tạo đường biên cho
vùng hiển thị của form

Tạo form có hình dạng bất kỳ

Ví dụ :
// trong sự kiên form load
// tạo biên cho form có hình ellipse
GraphicsPath path = new GraphicsPath();
path.AddEllipse(0, 0, 300, 300);
// tạo vùng hiển thị của form dựa trên biên
this.Region = new Region(path);

Tạo form có hình dạng bất kỳ

Tạo form có hình dạng bất kỳ

Ví dụ :
// tạo biên cho form
GraphicsPath path = new GraphicsPath();
path.AddArc(0, 0, 300, 300, 0, 180);
path.AddLine(0, 150, 0, 0);
path.AddLine(0, 0, 300, 0);
path.AddLine(300, 0, 300, 150);
// tạo vùng hiển thị của form dựa trên biên
this.Region = new Region(path);

×