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

Lập trình windows

60 351 1

Đ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 60
Dung lượng 1,89 MB

Nội dung

GDI+ Lập trình Windows GDI+  GDI: Graphical Device Interface  GDI+ API (Application programming interface) cung cấp lớp  Tạo đồ họa 2D vector  Thao tác font  Hiển thị ảnh  Thư viện FCL chứa lớp thao tác vẽ  System.Drawing  Tất thao tác tô vẽ form thực chức GDI+ System.Drawing System.Drawing Font FontFamily Graphics Icon class Color Point structure Rectangle Size Pen Region SolidBrush TextureBrush Image Brush HatchBrush LinearGradientBrush PathGradientBrush SolidBrush TextureBrush Đồ họa  Màn hình giống khung vẽ - canvas  Chương trình phải vẽ nội dung cửa sổ  Các thành phần GUI tự vẽ  Những thứ khác: lập trình viên  Làm để vẽ?  Khi phải vẽ? Làm để vẽ - Pixel Hệ tọa độ  Cartesean lật ngược lại! (0,0) (0,height) (width,0) (width, height) Đơn vị  Graphics.PageUnit: xác định đơn vị bề mặt     GraphicsUnit.Pixel (default) GraphicsUnit.Inch GraphicsUnit.Milimeter GraphicsUnit.Point  Graphics.PageScale: tỷ lệ output  g.PageScale = 1f (default) Một số kiến thức  Độ phân giải theo pixel  1024x768, 1920x1080…  Độ sâu màu (số lượng bit màu pixel)  6, 16, 24, 32  Không gian màu (số lượng màu thực sự)  bit: 256 màu  16 bit: 65536 màu Hệ thống phân cấp  Mỗi thành phần có khu vực riêng  Có hệ thống tọa độ riêng  Clipping  Không thể vẽ bên khu vực  Không thể vẽ đè lên thành phần khác? (0,0) Panel (0,0) Button Button (wb, hb) (wp, hp) Làm để vẽ  Panel thích hợp cho khu vực vẽ tùy biến Panel 10 Cấu trúc liệu cho đối tượng đồ họa  cách tiếp cận – Riêng kết hợp  Lưu nội dung logic cấu trúc liệu, vẽ dựa liệu Vd chương trình vẽ: đường, hình, màu… Vd chương trình trực quan hóa: bảng liệu • Lưu nội dung thị giác ảnh off-screen (bitmap) • Ví dụ pixel • Sau sử dụng g.DrawImage kiện paint 46 Kết hợp – Khả  Nếu lưu giữ đối tượng: cho phép hiệu chỉnh lại đối tượng đồ họa, gom nhóm, z-index…  Bài toán hit test  Khóa không chỉnh sửa: rasterization  Layer 47 Vấn đề flicker – Nháy 48 Giảm nháy  Sử dụng thuộc tính DoubleBuffered  DoubleBuffered = true;  Sử dụng hàm SetStyle  SetStyle(ControlStyles.OptimizedDoubleBuffer, true); 49 Tự tạo đệm  Bộ đệm mặc định BufferedGraphicsContext myContext; myContext = BufferedGraphicsManager.Current;  Tạo đệm riêng để vẽ tạm BufferedGraphicsContext myContext; myContext = new BufferedGraphicsContext(); // Chèn code tạo đồ họa // Cần ý phải Dispose myContext.Dispose(); 50 Thao tác đệm tự tạo BufferedGraphicsContext currentContext = BufferedGraphicsManager.Current; BufferedGraphics myBuffer = currentContext.Allocate(this.CreateGraphics(), this.DisplayRectangle); myBuffer.Graphics.DrawEllipse(Pens.Blue, this.DisplayRectangle); myBuffer.Render(); // Surface mặc định myBuffer.Render(this.CreateGraphics()); // Surface # 51 Một số kĩ thuật hỗ trợ tạo đối tượng vẽ 52 Sử dụng Design pattern  Factory  Prototype 53 Vấn đề Factory Pattern  Framework cần phải tạo thể lớp biết lớp trừu tượng mà lớp cụ thể  Ví dụ làm bánh Bakery * bread A Factory Method Johnson's Bakery Baked by Johnson * + bake Bread () : void 54 Ví dụ người làm vườn Frui t gardener {abstract} Appl e gardener Strawberry gardener Frui t * {abstract} Grape gardener 55 Ví dụ tác giả sản phẩm Product {abstract} ContreteProduct Creator {abstract} ConcreteCreator 56 Ví dụ ứng dụng tạo tài liệu Document {abstract} * Application {abstract} + CreateDocument () : bool + NewDocument () : bool + OpenDocument () : bool DrawingApplication The Factory Method ImgzipApplication 57 Cài đặt cho toán chức danh 58 Xét toán vẽ  Lựa chọn hình để vẽ  Gán sẵn button đối tượng tương ứng  Khi click vào tạo hàm Clone  Không phải switch  Mẫu Prototype 59 Sơ đồ lớp mẫu Prototype 60 [...]... được tô 32 Form có dạng NonRectangle  Bước 1:  Tạo ứng dụng Windows Application  Thiết kế Form có dạng như sau FormBorderStyle = none 33 Form có dạng NonRectangle  Bước 2:  Thiết lập các thuộc tính cho Form như sau: TransparencyKey = Control: màu sẽ trong suốt khi vẽ trên Form FormBorderStyle = None: Form không có đường biên  Thiết lập màu nền cho 2 Label là Transparent Phần background của 2 label... trên Form FormBorderStyle = None: Form không có đường biên  Thiết lập màu nền cho 2 Label là Transparent Phần background của 2 label sẽ tiệp với nền bên dưới 34 Form có dạng NonRectangle  Bước 3: Tạo trình xử lý cho sự kiện Paint 35 Khi nào phải vẽ lại? 36 ... TextureBrush Đồ họa  Màn hình giống khung vẽ - canvas  Chương trình phải vẽ nội dung cửa sổ  Các thành phần GUI tự vẽ  Những thứ khác: lập trình viên  Làm để vẽ?  Khi phải vẽ? Làm để vẽ - Pixel... NonRectangle  Bước 1:  Tạo ứng dụng Windows Application  Thiết kế Form có dạng sau FormBorderStyle = none 33 Form có dạng NonRectangle  Bước 2:  Thiết lập thuộc tính cho Form sau: TransparencyKey... FormBorderStyle = None: Form đường biên  Thiết lập màu cho Label Transparent Phần background label tiệp với bên 34 Form có dạng NonRectangle  Bước 3: Tạo trình xử lý cho kiện Paint 35 Khi phải vẽ

Ngày đăng: 22/01/2016, 18:19

TỪ KHÓA LIÊN QUAN