GDI+ (Graphic Device Interface)
GDI+ (Graphic Device Interface) Tổng quan• Thư viện giúp “vẽ” lên màn hình hoặc máy in mà không cần quan tâm đến cấu trúc phần cứng độc lập thiết bị• GDI+ bao gồm 3 nhóm “dịch vụ” chính:– 2D vector graphics: cho phép tạo hình từ các hình cơ bản (primitive): đường thẳng, tròn, eclipse, đường cong,…– Imaging: làm việc với các tập tin hình ảnh (bitmap, metafile)– Typography: vẽ chữ GDI+ namespace• System.Drawing• System.Drawing. Drawing2D• System.Drawing.Imaging• System.Drawing.Printing• System.Drawing.Text Các khái niệmBề mặt vẽ: Graphics (System.Drawing)- Lấy từ Paint event (form)- CreateGraphics (trong control)protected override void OnPaint(PaintEventArgs e) {Graphics g = e.Graphics;Pen pen = new Pen(Color.Red);g.DrawLine(pen,0,0,100,100);} Các khái niệmprivate void button1_click(Object o, EventArgs e) {Graphics g = this.CreateGraphics();Pen pen = new Pen(Color.Red,15);g.DrawLine(pen,0,0,100,100);g. Dispose();}Invalidate();Invalidate(myRect); Một số cấu trúc• Color• Point, PointF• Rectangle, RectangleF• Size, SizeF Point, PointF X,Y+, -, ==, !=, IsEmptyRectangle, RectangleFX,YTop, Left, Botton, RightHeight, WidthInflate(), IntersSec,() Union()Contain()Size, SizeF +, -, ==, !=Height, WidthRegion “phần ruột” của khuôn hình họcRectangle rect=new Rectangle(0,0,100,100)Region rgn= new Region(rect) Một số enumeration• ContentAlignment• FontStyle• GraphicsUnit• KnowColor• RotateFlipType• StringAlignment• … 2D vector graphicsPen & brushLines, rectangle, polygonDrawLine DrawLinesDrawPolygonFillPolygonPen, Pens, SystemPensBrush, Brushes, SystemBrushes, SolidBrushes, TextureBrushes, (System.Drawing.Drawing2D)HatchBrush, LinearGradientBrush, PathGradientBrushDrawRectangleFillRectangle 2D vector graphicsellipse, arc, cardinal spline, bezier splineDrawCurveDrawClosedCurveFillClosedCurveDrawArcDrawBezierDrawBeziersDrawPieFillPieDrawEllipseFillEllipse [...]... trục • Hệ trục (coordinate system) – Hệ trục thế giới (world coordinate system) – Hệ trục trang (page coordinate system) – Hệ trục thiết bị (device coordinate system) Một số cấu trúc • Color • Point, PointF • Rectangle, RectangleF • Size, SizeF GDI+ (Graphic Device Interface) 2D vector graphics Clipping: giới hạn các hình vẽ vào trong một region, path hoặc rectangle Graphics.SetClip(<region>) Graphics.SetClip(<path>) Graphics.SetClip(<rectangle>) ... tạo ra từ các điểm => mọi thao tác biến đổi (dù phức tạp đến mấy) đều quy về việc chuyển đổi tọa độ của các điểm. • Ma trận: là một bảng 2 chiều, mỗi ô là một số thực. Ý tưởng tạo animation với GDI+ • Xóa cũ - vẽ mới là sai lầm! • Frame-based animation: vẽ lại tồn bộ form theo tốc độ nhất định. Kiểm soát bằng các biến trạng thái. protected int x=0; protected int y=0; … private void Form1_Paint(object... -1 × 5 -10 = Lật (flip) theo chiều đứng Ví dụ Một số enumeration • ContentAlignment • FontStyle • GraphicsUnit • KnowColor • RotateFlipType • StringAlignment • … Ví dụ Matrix class • Lớp Matrix của GDI+ có sẵn tất cả các phương thức cần thiết để thao tác trên ma trận biến đổi. – Multiply: nhân một ma trận biến đổi với ma trận hiện tại – Scale: nhân một ma trận dãn với ma trận hiện tại – Shear:... and curves. Pens Provides static Pen definitions for all the standard colors. Tổng quan • Thư viện giúp “vẽ” lên màn hình hoặc máy in mà không cần quan tâm đến cấu trúc phần cứng độc lập thiết bị • GDI+ bao gồm 3 nhóm “dịch vụ” chính: – 2D vector graphics: cho phép tạo hình từ các hình cơ bản (primitive): đường thẳng, tròn, eclipse, đường cong,… – Imaging: làm việc với các tập tin hình ảnh (bitmap, . GDI+ (Graphic Device Interface) Tổng quan• Thư viện giúp “vẽ” lên màn hình hoặc máy in. hoặc máy in mà không cần quan tâm đến cấu trúc phần cứng độc lập thiết bị• GDI+ bao gồm 3 nhóm “dịch vụ” chính:– 2D vector graphics: cho phép tạo hình