CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 295

295

Chương 8: Đồ họa, đa phương tiện, và in ấn

g.DrawPath(Pens.Black, path);

}

g.Dispose();

}

}

Hình 8.2 Thực hiện “hit testing” với đối tượng Rectangle và GraphicsPath

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. Đố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 di chuyể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ện tượng rung hình (flicker) khi toàn bộ
form được vẽ lại.

3.

3.

T o form có hình d ng tùy bi n

ế

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ĩa hình
dạng mình muốn. Cách tiếp cận dễ nhất là sử dụng đối tượng

System.Drawing.Drawing2D.GraphicsPath

, nó có thể điều tiết bất kỳ sự kết hợp nào của cá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 đối tượ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

trong phương thức khởi dựng của

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.