1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Lập trình môi trường Window: Chương 6 - Ngô Thanh Hùng

47 11 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 47
Dung lượng 598,58 KB

Nội dung

Chương 6 trình bày về đồ họa Graphics Device Interface, GDI+ namespace, các khái niệm, cấu trúc, vẽ chữ, System.Drawing namespace, tạo animation với GDI+, các cách thức biến đổi hệ trục. Mời các bạn cùng tham khảo nội dung chi tiết.

GDI+ (Graphic Device Interface) CuuDuongThanCong.com https://fb.com/tailieudientucntt Tổng quan • Thư viện giúp “vẽ” lên hình 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 nhóm “dịch vụ” chính: – 2D vector graphics: cho phép tạo hình từ hình (primitive): đường thẳng, trịn, eclipse, đường cong,… – Imaging: làm việc với tập tin hình ảnh (bitmap, metafile) – Typography: vẽ chữ CuuDuongThanCong.com https://fb.com/tailieudientucntt GDI+ namespace • • • • • System.Drawing System.Drawing Drawing2D System.Drawing.Imaging System.Drawing.Printing System.Drawing.Text CuuDuongThanCong.com https://fb.com/tailieudientucntt Các khái niệm Bề 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); } CuuDuongThanCong.com https://fb.com/tailieudientucntt Các khái niệm private 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); CuuDuongThanCong.com https://fb.com/tailieudientucntt Một số cấu trúc • • • • Color Point, PointF Rectangle, RectangleF Size, SizeF CuuDuongThanCong.com https://fb.com/tailieudientucntt Point, PointF X,Y +, -, ==, !=, IsEmpty Rectangle, RectangleF X,Y Top, Left, Botton, Right Height, Width Inflate(), IntersSec,() Union() Contain() Size, SizeF +, -, ==, != Height, Width Region “phần ruột” khn hình học Rectangle rect=new Rectangle(0,0,100,100) Region rgn= new Region(rect) CuuDuongThanCong.com https://fb.com/tailieudientucntt Một số enumeration • • • • • • • ContentAlignment FontStyle GraphicsUnit KnowColor RotateFlipType StringAlignment … CuuDuongThanCong.com https://fb.com/tailieudientucntt 2D vector graphics Pen & brush Pen, Pens, SystemPens Brush, Brushes, SystemBrushes, SolidBrushes, TextureBrushes, (System.Drawing.Drawing2D) HatchBrush, LinearGradientBrush, PathGradientBrush Lines, rectangle, polygon DrawLine DrawLines CuuDuongThanCong.com DrawRectangle FillRectangle DrawPolygon FillPolygon https://fb.com/tailieudientucntt 2D vector graphics ellipse, arc, cardinal spline, bezier spline DrawEllipse FillEllipse DrawPie FillPie CuuDuongThanCong.com DrawCurve DrawClosedCurve FillClosedCurve DrawBezier DrawBeziers DrawArc https://fb.com/tailieudientucntt Thứ tự phép biến đổi • Thứ tự phép biến đổi quan trọng, áp dụng thứ tự biến đổi khác tạo hiệu ứng khác g.RotateTransform(45) g.TranslateTransform(100,50) g.DrawRectangle(pen,-25,-25,50,50) x y y CuuDuongThanCong.com x https://fb.com/tailieudientucntt Thứ tự phép biến đổi • Thứ tự phép biến đổi quan trọng, áp dụng thứ tự biến đổi khác tạo hiệu ứng khác g.RotateTransform(45) g.TranslateTransform(100,50) g.DrawRectangle(pen,-25,-25,50,50) x 50 100 y x y CuuDuongThanCong.com https://fb.com/tailieudientucntt Biến đổi hệ trục ma trận • Tất phép biến đổi thực “bên dưới” ma trận • Tư tưởng chính: hình tạo từ điểm => thao tác biến đổi (dù phức tạp đến mấy) quy việc chuyển đổi tọa độ điểm • Ma trận: bảng chiều, ô số thực CuuDuongThanCong.com https://fb.com/tailieudientucntt Đại cương ma trận • Cộng ma trận, cộng phần tử tương ứng + CuuDuongThanCong.com = 11 13 https://fb.com/tailieudientucntt i cng v ma trn ã Nhõn ma trn: (mìn) nhõn vi (nìp) m ì p ã Giỏ tr (i,j) = tích vơ hướng (hàng i A) (cột j B) • Tích vơ hướng của: – (a1,a2,a3,…,an)  (b1,b2,b3,…,bn) = (a1*b1 + a2*b2 + a3*b3 + …+anbn) 11 × = C(1,1) = (2,3)  (1,3) = 2*1 + 3*3 = 11 CuuDuongThanCong.com https://fb.com/tailieudientucntt Đại cương v ma trn ã Nhõn ma trn: (mìn) nhõn vi (nìp) m ì p ã Giỏ tr (i,j) = tích vơ hướng (hàng i A) (cột j B) • Tích vơ hướng của: – (a1,a2,a3,…,an)  (b1,b2,b3,…,bn) = (a1*b1 + a2*b2 + a3*b3 + …+anbn) 11 16 × = C(1,2) = (2,3)  (2,4) = 2*2 + 3*4 = 16 CuuDuongThanCong.com https://fb.com/tailieudientucntt Đại cương ma trn ã Nhõn ma trn: (mìn) nhõn vi (nìp) m ì p ã Giỏ tr (i,j) = tớch vô hướng (hàng i A) (cột j B) • Tích vơ hướng của: – (a1,a2,a3,…,an)  (b1,b2,b3,…,bn) = (a1*b1 + a2*b2 + a3*b3 + …+anbn) × = 11 16 19 C(2,1) = (4,5)  (1,3) = 4*1 + 5*3 = 19 CuuDuongThanCong.com https://fb.com/tailieudientucntt Biến đổi tọa độ điểm ma trận • Một điểm ma trn 1ì2 (P) ã Phộp bin i l ma trn: 2ì2 (T) ã Bin i: P = P ì T 10 × 0 -1 = -10 Lật (flip) theo chiều đứng CuuDuongThanCong.com https://fb.com/tailieudientucntt Biến đổi tọa độ điểm ma trận • Một điểm ma trn 1ì2 (P) ã Phộp bin i l ma trn: 2ì2 (T) ã Bin i: P = P ì T 10 × -1 = -10 Xoay 900 CuuDuongThanCong.com https://fb.com/tailieudientucntt Biến đổi tọa độ điểm ma trn ã Mt im l ma trn 1ì2 (P) • Phép biến đổi ma trận: 2×2 (T) • Biến đổi: P’ = P × T × 0 = Dãn trục x lần CuuDuongThanCong.com https://fb.com/tailieudientucntt Biến đổi tọa độ điểm ma trận • Vấn đề: khơng thể biểu diễn phép translate (dịch chuyển) điểm nhân ma trận • Giải quyết: – Mở rộng ma trận biến đổi thành 3×3, thêm hàng để chứa ma trận transalate, thêm cột dummy (0,0,1) – Thêm thành phần “rỗng” (dummy) có giá trị vào tọa độ điểm x y × CuuDuongThanCong.com 0 0 0 10 20 = x+10 y+20 https://fb.com/tailieudientucntt Biến đổi tọa độ điểm ma trận • Các phép biến đổi khác bảo toàn x x y y 1 × × CuuDuongThanCong.com -1 0 0 = -y x 1 0 -1 0 = x -y https://fb.com/tailieudientucntt Biến đổi tọa độ điểm ma trận • Tại dùng nhân ma trận mà khơng tính tốn trực tiếp? • Ma trận có khả “ghép” nhiều phép biến đổi làm • Để làm 100 phép biến đổi lúc, cần tính tích 100 ma trận biến đổi, sau nhân ma trận điểm ma trận tích • Như phải nhân nhiều lần???? • Đừng qn: hình có nhiều điểm CuuDuongThanCong.com https://fb.com/tailieudientucntt Matrix class • Lớp Matrix GDI+ có sẵn tất phương thức cần thiết để thao tác ma trận biến đổi – – – – – – Multiply: nhân ma trận biến đổi với ma trận Scale: nhân ma trận dãn với ma trận Shear: nhân ma trận kéo với ma trận Translate: nhân ma trận dịch chuyển với ma trận Rotate: nhân ma trận xoay với ma trận RotateAt: nhân ma trận xoay quanh tâm định trước với ma trận – Reset: đặt ma trận ma trận đơn vị • Sau tính toán ma trận biến đổi, “áp dụng” ma trận bằng: – Graphics.Transform = CuuDuongThanCong.com https://fb.com/tailieudientucntt Biến đổi cục • Các biến đổi hệ trục có tính tồn cục (có tác dụng tất đối tượng) Để áp dụng cục đối tượng, dùng GraphicsPath.Transform(matrix) • Biến đổi cục thường dùng để tạo chuyển động cục thành phần đối tượng Chẳng hạn, nòng súng xe tăng CuuDuongThanCong.com https://fb.com/tailieudientucntt ... https://fb.com/tailieudientucntt Giải nháng hình double-buffer Form.DoubleBuffered = true Mọi thao tác vẽ diễn back-buffer Khi hoàn tất, nội dung back-buffer hoán chuyển (flip) lên front-buffer (form) * Thao tác flip... trục World coordinate – hệ trục ảo – sở lệnh Draw, Fill 100 x (-2 5 ,-2 5) (0,0) 50 x g.TranslateTransform(100,50) g.DrawRectangle(pen ,-2 5 ,-2 5,50,50) y y CuuDuongThanCong.com https://fb.com/tailieudientucntt... điểm ma trận • Các phép biến đổi khác bảo toàn x x y y 1 × × CuuDuongThanCong.com -1 0 0 = -y x 1 0 -1 0 = x -y https://fb.com/tailieudientucntt Biến đổi tọa độ điểm ma trận • Tại dùng nhân ma

Ngày đăng: 17/04/2022, 09:53

TỪ KHÓA LIÊN QUAN