2010-05-11 34 views
14

Khi xem xét các hàm tạo cho lớp System.Drawing.Font có một tham số để truyền vào một trong các FontStyles được định nghĩa trong System.Drawing.FontStyle enum.Cách đặt nhiều FontStyles khi tạo phông chữ?

tức là. Bold Italic Regular Gạch chân

và có những đặc tính boolean cho Bold, Italic, Underline vv trong đối tượng cụ thể, nhưng họ chỉ đọc.

Điều gì sẽ xảy ra nếu tôi muốn xác định phông chữ của mình có nhiều kiểu như chữ đậm và gạch dưới?

Tôi làm cách nào để thực hiện việc này?

Trả lời

31

FontStyle enum là Flags enum. Điều này có nghĩa rằng các thành viên của nó là tất cả các quyền hạn của hai, cho phép bạn kết hợp chúng bằng cách sử dụng một OR nhị phân.

Ví dụ, nếu bạn muốn in đậm và gạch dưới, bạn sẽ vượt qua

FontStyle.Bold | FontStyle.Underline 

Các thanh dọc (|) là nhị phân tử OR.

+0

Làm việc hoàn toàn cảm ơn bạn! Những thứ này là những khái niệm mới đối với chúng tôi những người nghiện Java. – anon58192932

10

Trong constructor Font, bạn có thể kết hợp nhiều FontStyles bằng cách sử dụng toán tử OR:

Font font = new Font(this.Font, FontStyle.Bold | FontStyle.Underline); 
0

Bạn có thể sử dụng một cái gì đó như thế này, để tránh nhiều IFS cho từng trường hợp:

//define a font to use. 
Font font; 

font = new Font(fontname, fontsize, GraphicsUnit.Pixel); 

if (bold) 
    font = new Font(font, font.Style^FontStyle.Bold); 
if (italic) 
    font = new Font(font, font.Style^FontStyle.Italic); 
if (underline) 
    font = new Font(font, font.Style^FontStyle.Underline); 
if (strikeout) 
    font = new Font(font, font.Style^FontStyle.Strikeout); 
+0

Điều này cực kỳ kém hiệu quả ... Sử dụng cờ enum để đặt nhiều kiểu cùng một lúc. – Tim

Các vấn đề liên quan