n GDI: G raphical D evice I nterface n GDI+ là API Application programming interface cung cấp các lớp cho phép q Tạo những đồ họa 2D vector q Thao tác trên font, chuỗi ký tự... structur
Trang 1GD I +
ThS Nguyễn Hà Giang Khoa CNTT
Trang 3n GDI: G raphical D evice I nterface
n GDI+ là API (Application programming interface) cung cấp các lớp cho phép
q Tạo những đồ họa 2D vector
q Thao tác trên font, chuỗi ký tự
Trang 4structure class
System.Drawing
Font FontFamily
Graphics
Icon Pen Region SolidBrush TextureBrush Image
Brush
HatchBrush LinearGradientBrush PathGradientBrush SolidBrush
Color Point Rectangle Size
Trang 5V trên Form
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
} protected override void OnPaint(PaintEventArgs e) {
Graphics g = e.Graphics;
g.DrawString("Hello GDI!", Font, Brushes.Red, 20, 20);
} }
Trang 6n Lớp Graphics thể hiện
q “Abstract” drawing surface
q Tập hợp những “tool” cho phép thao tác trên
surface đó
n Để lấy đối tượng Graphics
q Sử dụng thuộc tính Graphics được truyền cho
OnPaint()
q Sử dụng phương thức CreateGraphics() của
control
q Lấy từ đối tượng dẫn xuất từ Bitmap
n Gọi hàm Invalidate() thay vì OnPaint()
Trang 8protected override void OnPaint(PaintEventArgs
paintevent) {
Bitmap bmpimage=new Bitmap("hutech.jpg");
Graphics graf = Graphics.FromImage (bmpimage);
}
Lấy từ control
Lấy từ ảnh
Trang 9q Tham số Font và Brush không có mặc định nên
phải truyền vào.
Trang 10Panel,
GroupBox
Control
Trang 11T a h th ng
n Graphics.PageUnit: xác định đơn vị của bề mặt
q GraphicsUnit Pixel (default)
Trang 12n Sử dụng màu được định nghĩa trong Color
q Color.Blue, Color.Red, Color.White…
q SystemColors.Control, SystemColors.ControlText…
q 32 bit để thể hiện màu
q A (alpha) thể hiện mức độ trong suốt (255 opaque)
q RGB là Red , Green và Blue
q Tạo màu sử dụng hàm FromArgb()
n Color red = Color.FromArgb(255,0,0);
n Color blue = Color.FromArgb(128, 0, 255, 0);
Trang 13n Cách tạo đối tượng Font: new Font(…)
q Có 13 phiên bản của constructor
q Font fa = new Font(" Times New Roman ", 8);
Font fb = new Font(" Arial ", 36, FontStyle.Bold);
Font fc = new Font(fb, FontStyle.Bold | FontStyle.Italic); Font fd = new Font(" Arial ", 1, GraphicsUnit.Inch);
q Nếu tên font không tìm thấy thì font mặc định được
sử dụng.
Size = 8 pixel
Size = 1 inch
Trang 14Font
Trang 16n Xác định width , style , fill style
n Không cho kế thừa, nhưng tạo thể hiện được
q Pen p1 = new Pen(Color.Green);
Pen p2 = new Pen(Color.blue, 10);
n Sử dụng lớp Pens có 141 pen được định nghĩa trước.
q Pen p3 = Pens.Violet;
Trang 17Pen
Trang 18n Dùng để tô vùng bên trong của hình
n Lớp Brush là lớp abstract nên không
Trang 21Line, Rectangle, Ellipse
Trang 22Line, Rectangle, Ellipse
Trang 23n Lớp Image hiển thị các ảnh bitmap
q Các dạng ảnh: *.bmp, *.gif, *.jpg, *.ico…
n Phương thức static FromFile tạo ảnh từ file
q Image img = Image.FromFile(“hutech.bmp”);
q Image img2 = Image.FromFile(“hutech.gif”);
n Phương thức DrawImage xuất ảnh lên Graphics
q g.DrawImage(img, 10, 10);
q G.DrawImage(img2, 10, 10, 100,100); // scale trong
hình chữ nhật kích thước 100x100
Trang 24Image
Trang 25Ellipse được vẽ lên ảnh, rồi sau
đó với vẽ ảnh lên Form
Trang 27Form c ó d ng NonRectangle
n Tạo form có hình dạng khác hình chữ nhật
q Sử dụng thuộc tính TransparencyKey của Form
q Sử dụng các hiệu ứng màu được tô
Trang 28Form c ó d ng NonRectangle
q Tạo ứng dụng Windows Application
q Thiết kế Form có dạng như sau
FormBorderStyle = none
Trang 29Form c ó d ng NonRectangle
q Thiết lập các thuộc tính cho Form như sau:
n TransparencyKey = Control: màu sẽ trong suốt khi
vẽ trên Form
n FormBorderStyle = None: Form không có đường biên
q Thiết lập màu nền cho 2 Label là Transparent
n Phần background của 2 label sẽ tiệp với nền bên dưới
Trang 30Form c ó d ng NonRectangle
n Bước 3: Tạo trình xử lý cho sự kiện Paint
Trang 31Form c ó d ng NonRectangle
Vùng của Form
Vùng ngoài Form
Trang 32Form c ó d ng NonRectangle
n Bổ sung di chuyển form
q Thêm namespace:
n System.Runtime.InteropServices;
q Load các hàm từ DLL vào project
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[ DllImportAttribute( "user32.dll")]
public static extern int SendMessage( IntPtr hWnd,
int Msg, int wParam, int lParam);
[ DllImportAttribute( "user32.dll")]
public static extern bool ReleaseCapture();
Trang 34n MPEG (Motion Pictures Expert Group): video
n AVI (Audio-video Interleave): video
n WAV (Windows Wave-file Format): audio
n MIDI (Musical Instrument Digital Interface): audio
Trang 35n Chọn Windows Media Player
q Khi đó control WMP sẽ hiện ở dưới cùng của
ToolBox
Trang 37n Bước 3: Tạo MenuStrip để bổ sung chức năng Open File media
Trang 38n Bước 4: viết trình xử lý cho Menuitem Open
Trang 39Multimedia