Xây dựng ₫ối tượng giao diện có hình dạng tùy ý

Một phần của tài liệu Chuong7 (Trang 32 - 41)

 Các ₫ối tượng giao diện, dù nhỏ hay lớn (Button, TextBox, ListBox, TreeView,…), ₫ều ₫ược Windows quản lý giống nhau : Windows xử lý chúng như là window.

 Mỗi window sẽ ₫ược hiển thị ở dạng mặc ₫ịnh là hình chữ nhật có ₫ường viền xung quanh và titlebar ở phía trên. Tuy nhiên ta có thể miêu tả lại hình dạng cho window theo nhu cầu riêng của mình.

7.7 Xây dựng ₫ối tượng giao diện có hình dạng tùy ý

 Window chứa các thuộc tính sau ₫ây có liên quan ₫ến việc xác ₫ịnh chính xác hình dạng của nó :

 BackgroundImage : miêu tả hình bitmap ₫ược dùng ₫ể hiển thị nền window và ₫ể xác ₫ịnh hình dạng của window.

 FormBorderStyle : miêu tả chế ₫ộ hiển thị các ₫ường biên và titlebar của window.

 Region : miêu tả vùng hiển thị và làm việc của window, nó gồm từ1 tới nhiều vùng rời rạc, mỗi vùng rời rạc ₫ược bao ₫óng bởi 1 ₫ường viền khép kín.

7.7 Xây dựng ₫ối tượng giao diện có hình dạng tùy ý

 Đường viền khép kín của 1 vùng ₫ộc lập có thể ₫ược xác ₫ịnh bằng 1 trong 2 phương pháp :

 Danh sách các ₫oạn thẳng hay cong liên tiếp và khép kín, mỗi ₫oạn thẳng hay cong có thể miêu tả bởi 1 hàm toán học như Line, Arc,....

 Do hình bitmap nào ₫ó xác ₫ịnh.

 Có 2 kỹ thuật xây dựng window có hình dạng bất kỳ :

 Khai báo các thuộc tính liên quan 1 cách trực quan tại thời ₫iểm thiết kế.

 Lập trình ₫ộng ₫ể thiết lập các giá trị phù hợp cho các thuộc tính liên quan ₫ến window.

7.7 Xây dựng ₫ối tượng giao diện có hình dạng tùy ý

 Qui trình xây dựng Form giao diện có hình dạng bất kỳ bằng cách khai báo các thuộc tính liên quan 1 cách trực quan tại thời ₫iểm thiết kế : Tạo form cần dùng, chọn nó ₫ể hiển thị cửa sổ thuộc tính, tìm và thiết lập giá trị cho các thuộc tính sau ₫ây :

 BackgroundImage : khai báo file bitmap ₫ược dùng ₫ể hiển thị nền của Form và ₫ể xác ₫ịnh hình dạng của Form. Lưu ý hình bitmap cần có tính chất : các vùng diện tích của bitmap phải có màu khác với màu nền của hình bitmap; kích thước hình bitmap nên phù hợp với nhu cầu sử dụng của form tương ứng.

 FormBorderStyle = None ₫ể không hiển thị titlebar và ₫ường viền mặc ₫ịnh.

7.7 Xây dựng ₫ối tượng giao diện có hình dạng tùy ý

 Thí dụ hãy xây dựng ứng dụng giải phương trình bậc 2 có hình dạng như sau :

7.7 Xây dựng ₫ối tượng giao diện có hình dạng tùy ý

 Qui trình xây dựng ₫ối tượng giao diện có hình dạng bất kỳ bằng cách viết code thiết lập ₫ộng các thuộc tính liên quan : Tạo ₫ối tượng cần dùng, viết ₫oạn code thiết lập 3 thuộc tính liên quan khi cần thiết :

 BackgroundImage : miêu tả hình bitmap ₫ược dùng ₫ể hiển thị nền window (nếu muốn hiển thị hình nền).

 FormBorderStyle = None.

 Region : miêu tả vùng diện tích làm việc của ₫ối tượng.

 Thường Region ₫ược xác ₫ịnh thông qua ₫ối tượng Path, ₫ối tượng này miêu tả ₫ường viền của Region.

 Để tạo ₫ối tượng Path, ta có thể dùng các hàm toán học miêu tả từng ₫oạn viền khép kín của Region hay dùng ₫ường viền của hình

7.7 Xây dựng ₫ối tượng giao diện có hình dạng tùy ý

7.7 Xây dựng ₫ối tượng giao diện có hình dạng tùy ý

for (y = 0; y <= yMax - 1; y++) { //duyệt từng hàng bitmap

idx = isrow; //xác ₫ịnh offset (trong buffer) chứa pixel cần xử lý

for (x = 0; x <= xMax - 1; x++) { //duyệt từng pixel trên hàng

if (Equal(pbase, idx, Key)) { //nếu là pixel nền thì bỏ qua

idx = idx + 4; continue; }

//nhớ lại vị trí pixel tái nhất của vùng ₫ang tìm ₫ược

int x0 = x;

//duyệt tìm các pixel còn lại của vùng hiện hành

while (x < xMax && (!Equal(pbase, idx, Key))) { x = x + 1; idx = idx + 4; }

//add path của vùng tìm ₫ược vào ₫ối tượng Path

path.AddRectangle(new Rectangle(x0, y, x - x0, 1)); }

isrow = isrow + bitmapData.Stride; //₫ến pixel ₫ầu hàng kế

B G R A

7.7 Xây dựng ₫ối tượng giao diện có hình dạng tùy ý

 Thí dụ hãy xây dựng ứng dụng giải phương trình bậc 2 có hình dạng như sau :

Một phần của tài liệu Chuong7 (Trang 32 - 41)

Tải bản đầy đủ (PDF)

(41 trang)