Đồ hoạ, đa phương tiện ( Mutilmedia) và In ấn Đồ họa phần 2
Số trang: 7
Loại file: pdf
Dung lượng: 155.88 KB
Lượt xem: 6
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Chú ý rằng hoạt động này diễn ra trực tiếp bên trong phương thức thụ lý sự kiện MouseMove. Việc vẽ chỉ được thực hiện nếu phần chọn hiện tại thay đổi.
Nội dung trích xuất từ tài liệu:
Đồ hoạ, đa phương tiện ( Mutilmedia) và In ấn Đồ họa phần 2Chú ý rằng hoạt động này diễn ra trực tiếp bên trong phương thức thụ lý sự kiệnMouseMove. Việc vẽ chỉ được thực hiện nếu phần chọn hiện tại thay đổi. Đối với mộtđoạn mã đơn giản, bạn có thể làm mất hiệu lực toàn bộ form mỗi khi con trỏ chuột dichuyển vào trong hoặc ra khỏi một vùng và thụ lý tất cả việc vẽ trong phương thức thụ lýsự kiện Form.Paint, nhưng điều này dẫn đến việc phải vẽ nhiều hơn và tạo nên hiệntượng rung hình (flicker) khi toàn bộ form được vẽ lại. 1.1 Tạo form có hình dạng tùy biến Bạn cần tạo một form hoặc điều kiểm không phải hình chữ nhật. Tạo một đối tượng System.Drawing.Region có hình dạng như bạn muốn, và gán nó vào thuộc tính Form.Region hoặc Control.Region.Để tạo một form hoặc điều kiểm không phải hình chữ nhật, trước hết bạn cần định nghĩahình dạng mình muốn. Cách tiếp cận dễ nhất là sử dụng đối tượngSystem.Drawing.Drawing2D.GraphicsPath, nó có thể điều tiết bất kỳ sự kết hợp nào củacác hình ellipse, chữ nhật, và cung khép kín. Bạn có thể thêm các shape vào một đốitượng GraphicsPath bằng các phương thức như AddEllipse, AddRectangle, vàAddClosedCurve. Một khi đã hoàn tất việc định nghĩa hình dạng như mong muốn, bạn cóthể tạo một đối tượng Region từ GraphicsPath này—chỉ cần trình ra GraphicsPath trongphương thức khởi dựng của lớp Region. Cuối cùng, bạn có thể gán Region vào thuộc tínhForm.Region hoặc Control.Region.Ví dụ dưới đây trình bày cách tạo một form có hình dáng bất thường (xem hình 8.3) bằnghai cung tròn (hai cung này được chuyển thành một figure khép kín bằng phương thứcGraphicsPath.CloseAllFigures). The image part with relationship ID rId5 was not found in the file. Hình 8.3 Form không phải hình chữ nhậtusing System;using System.Windows.Forms;using System.Drawing;using System.Drawing.Drawing2D;public class IrregularForm : System.Windows.Forms.Form { private System.Windows.Forms.Button cmdClose; private System.Windows.Forms.Label label1; // (Bỏ qua phần mã designer.) private void IrregularForm_Load(object sender, System.EventArgs e) { GraphicsPath path = new GraphicsPath(); Point[] pointsA = new Point[] {new Point(0, 0), new Point(40, 60), new Point(this.Width - 100, 10)}; path.AddCurve(pointsA); Point[] pointsB = new Point[] {new Point(this.Width - 40, this.Height - 60), new Point(this.Width, this.Height), new Point(10, this.Height)}; path.AddCurve(pointsB); path.CloseAllFigures(); this.Region = new Region(path); } private void cmdClose_Click(object sender, System.EventArgs e) { this.Close(); }}Đối với ví dụ tạo điều kiểm không phải hình chữ nhật, bạn hãy tham khảo mục 8.4. 1.2 Tạo điều kiểm có hình dạng tùy biến Bạn cần tạo một shape mà người dùng có thể thao tác với nó trên form như kéo rê, thay đổi kích thước.... Tạo một điều kiểm tùy biến, và chép đè painting logic để vẽ shape. Gán shape của bạn vào thuộc tính Control.Region. Kế đó, bạn có thể sử dụng Region này để thực hiện “hit testing”.Nếu muốn tạo một giao diện người dùng phức tạp kết hợp nhiều phần tử được vẽ tùybiến, bạn cần có phương cách để theo vết các phần tử này và cho phép người dùng tươngtác với chúng. Cách tiếp cận dễ nhất trong .NET là tạo một điều kiểm chuyên biệt bằngcách dẫn xuất một lớp từ System.Windows.Forms.Control. Kế đó, bạn có thể tùy biếnphương cách mà điều kiểm này được vẽ dựa theo tập các sự kiện cơ bản của nó.Điều kiểm được trình bày dưới đây mô tả một hình ellipse đơn giản trên form. Tất cả cácđiều kiểm đều được liên hợp với một vùng chữ nhật trên form, do đó điều kiểmEllipseShape sẽ tạo một ellipse lắp đầy các đường biên này (được cấp thông qua thuộctính Control.ClientRectangle). Một khi shape đã được tạo, thuộc tính Control.Regionđược thiết lập dựa theo biên trên ellipse. Điều này bảo đảm các sự kiện như MouseMove,MouseDown, Click... sẽ xảy ra chỉ khi chuột ở trên ellipse, chứ không phải toàn bộ hìnhchữ nhật.Dưới đây là phần mã đầy đủ của lớp EllipseShape:using System;using System.Windows.Forms;using System.Drawing;using System.Drawing.Drawing2D;public class EllipseShape : System.Windows.Forms.Control { private GraphicsPath path = null; private void RefreshPath() { // Tạo GraphicsPath cho shape và áp dụng nó vào // điều kiểm bằng cách thiết lập thuộc tính Region. path = new GraphicsPath(); path.AddEllipse(this.ClientRectangle); this.Region = new Region(path); } protected override void OnResize(System.EventArgs e) { base.OnResize(e); RefreshPath(); this.Invalidate(); } protected override void OnPaint (System.Windows.Forms.PaintEventArgs e) ...
Nội dung trích xuất từ tài liệu:
Đồ hoạ, đa phương tiện ( Mutilmedia) và In ấn Đồ họa phần 2Chú ý rằng hoạt động này diễn ra trực tiếp bên trong phương thức thụ lý sự kiệnMouseMove. Việc vẽ chỉ được thực hiện nếu phần chọn hiện tại thay đổi. Đối với mộtđoạn mã đơn giản, bạn có thể làm mất hiệu lực toàn bộ form mỗi khi con trỏ chuột dichuyển vào trong hoặc ra khỏi một vùng và thụ lý tất cả việc vẽ trong phương thức thụ lýsự kiện Form.Paint, nhưng điều này dẫn đến việc phải vẽ nhiều hơn và tạo nên hiệntượng rung hình (flicker) khi toàn bộ form được vẽ lại. 1.1 Tạo form có hình dạng tùy biến Bạn cần tạo một form hoặc điều kiểm không phải hình chữ nhật. Tạo một đối tượng System.Drawing.Region có hình dạng như bạn muốn, và gán nó vào thuộc tính Form.Region hoặc Control.Region.Để tạo một form hoặc điều kiểm không phải hình chữ nhật, trước hết bạn cần định nghĩahình dạng mình muốn. Cách tiếp cận dễ nhất là sử dụng đối tượngSystem.Drawing.Drawing2D.GraphicsPath, nó có thể điều tiết bất kỳ sự kết hợp nào củacác hình ellipse, chữ nhật, và cung khép kín. Bạn có thể thêm các shape vào một đốitượng GraphicsPath bằng các phương thức như AddEllipse, AddRectangle, vàAddClosedCurve. Một khi đã hoàn tất việc định nghĩa hình dạng như mong muốn, bạn cóthể tạo một đối tượng Region từ GraphicsPath này—chỉ cần trình ra GraphicsPath trongphương thức khởi dựng của lớp Region. Cuối cùng, bạn có thể gán Region vào thuộc tínhForm.Region hoặc Control.Region.Ví dụ dưới đây trình bày cách tạo một form có hình dáng bất thường (xem hình 8.3) bằnghai cung tròn (hai cung này được chuyển thành một figure khép kín bằng phương thứcGraphicsPath.CloseAllFigures). The image part with relationship ID rId5 was not found in the file. Hình 8.3 Form không phải hình chữ nhậtusing System;using System.Windows.Forms;using System.Drawing;using System.Drawing.Drawing2D;public class IrregularForm : System.Windows.Forms.Form { private System.Windows.Forms.Button cmdClose; private System.Windows.Forms.Label label1; // (Bỏ qua phần mã designer.) private void IrregularForm_Load(object sender, System.EventArgs e) { GraphicsPath path = new GraphicsPath(); Point[] pointsA = new Point[] {new Point(0, 0), new Point(40, 60), new Point(this.Width - 100, 10)}; path.AddCurve(pointsA); Point[] pointsB = new Point[] {new Point(this.Width - 40, this.Height - 60), new Point(this.Width, this.Height), new Point(10, this.Height)}; path.AddCurve(pointsB); path.CloseAllFigures(); this.Region = new Region(path); } private void cmdClose_Click(object sender, System.EventArgs e) { this.Close(); }}Đối với ví dụ tạo điều kiểm không phải hình chữ nhật, bạn hãy tham khảo mục 8.4. 1.2 Tạo điều kiểm có hình dạng tùy biến Bạn cần tạo một shape mà người dùng có thể thao tác với nó trên form như kéo rê, thay đổi kích thước.... Tạo một điều kiểm tùy biến, và chép đè painting logic để vẽ shape. Gán shape của bạn vào thuộc tính Control.Region. Kế đó, bạn có thể sử dụng Region này để thực hiện “hit testing”.Nếu muốn tạo một giao diện người dùng phức tạp kết hợp nhiều phần tử được vẽ tùybiến, bạn cần có phương cách để theo vết các phần tử này và cho phép người dùng tươngtác với chúng. Cách tiếp cận dễ nhất trong .NET là tạo một điều kiểm chuyên biệt bằngcách dẫn xuất một lớp từ System.Windows.Forms.Control. Kế đó, bạn có thể tùy biếnphương cách mà điều kiểm này được vẽ dựa theo tập các sự kiện cơ bản của nó.Điều kiểm được trình bày dưới đây mô tả một hình ellipse đơn giản trên form. Tất cả cácđiều kiểm đều được liên hợp với một vùng chữ nhật trên form, do đó điều kiểmEllipseShape sẽ tạo một ellipse lắp đầy các đường biên này (được cấp thông qua thuộctính Control.ClientRectangle). Một khi shape đã được tạo, thuộc tính Control.Regionđược thiết lập dựa theo biên trên ellipse. Điều này bảo đảm các sự kiện như MouseMove,MouseDown, Click... sẽ xảy ra chỉ khi chuột ở trên ellipse, chứ không phải toàn bộ hìnhchữ nhật.Dưới đây là phần mã đầy đủ của lớp EllipseShape:using System;using System.Windows.Forms;using System.Drawing;using System.Drawing.Drawing2D;public class EllipseShape : System.Windows.Forms.Control { private GraphicsPath path = null; private void RefreshPath() { // Tạo GraphicsPath cho shape và áp dụng nó vào // điều kiểm bằng cách thiết lập thuộc tính Region. path = new GraphicsPath(); path.AddEllipse(this.ClientRectangle); this.Region = new Region(path); } protected override void OnResize(System.EventArgs e) { base.OnResize(e); RefreshPath(); this.Invalidate(); } protected override void OnPaint (System.Windows.Forms.PaintEventArgs e) ...
Tìm kiếm theo từ khóa liên quan:
công nghệ thông tin kĩ thuật lập trình ngôn ngữ lập trình ngôn ngữ C# C# Đồ hoạ đa phương tiện ( Mutilmedia) và In ấn Đồ họa phần 2Tài liệu có liên quan:
-
52 trang 468 1 0
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 367 0 0 -
96 trang 334 0 0
-
74 trang 329 0 0
-
Đồ án tốt nghiệp: Xây dựng ứng dụng di động android quản lý khách hàng cắt tóc
81 trang 321 0 0 -
Tài liệu dạy học môn Tin học trong chương trình đào tạo trình độ cao đẳng
348 trang 321 1 0 -
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 316 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 310 0 0 -
Báo cáo thực tập thực tế: Nghiên cứu và xây dựng website bằng Wordpress
24 trang 304 0 0 -
Tài liệu hướng dẫn sử dụng thư điện tử tài nguyên và môi trường
72 trang 302 0 0