2015-08-18 27 views
3

我目前正試圖在運行時生成標籤,並在運行時添加它們各自的字體。如何將字體添加到具有多個屬性的標籤?

到目前爲止,我設法讓我的標籤下劃線和粗體這一行:

championName.Font = new Font(championName.Font, FontStyle.Bold | FontStyle.Underline); 

即使加了屬性|也似乎很奇怪,它的工作原理。

但是,如果我現在想要更改我的標籤文字大小,我該怎麼做?我不能完全弄清楚,我將不得不擠在

我試圖做到這一點通過創建一個字體對象是這樣的:

Font fnt = new Font(); 

,然後編輯它的屬性,但很失敗快速考慮我不能只是創建一個這樣的對象。

那麼,我該如何改變這個標籤的多個東西?我的意思是這很明顯,我不能只分配另一個new Font();而不會丟失我的舊的,所以必須有辦法做到這一點。

+3

'Font'構造函數有一個超載,需要一個字體大小:https://msdn.microsoft.com/en-us/library/zet4c3fa(v=vs.110).aspx –

+0

接下來你需要的東西是顏色;所以創建一個類並將東西放入其中..這樣一個myFont實例也可以存儲在標籤的標籤中。 – TaW

+1

「儘管用|加起來的屬性似乎也已經很奇怪了 - 」這是一個按位或者;每個枚舉值代表一個特定的位模式(例如0001和0010),並且通過對它們進行比特或運算,你會得到一個包含* both *屬性(0011)的位模式。 –

回答

7

System.Drawing.Font class有兩個構造函數。一種可能性是使用構造之一,size parameter

championName.Font = new Font(SystemFonts.DefaultFont, 16.0, FontStyle.Bold | FontStyle.Underline); 
// championName.Font = new Font(championName.Font.FontFamily, 16.0, FontStyle.Bold | FontStyle.Underline); 
+1

您也可以通過將其用作第一個參數來改變當前字體。 –

+0

@LeeHarrison我已更新我的示例代碼。感謝提示。 – pasty

+0

我不知道爲什麼我無法得到這個工作。根據文件,這似乎應該工作。然而,它總是暗示我最接近的依據是Font.Font(string familyName,float emSize,GraphicsUnit unit)。 – Sossenbinder

-1

考慮製作一個擴展Font()的MyFont()類。

這樣你就可以創建一個更簡化的參數界面,而不是在你的參數中求助於'黑客'。

+3

對不起,'字體'是封閉的,你不能擴展它。 –

2

嘗試以下幾個解決方案:

1)你可以嘗試Font類的重載的構造函數。其中一些包括大小作爲參數之一。看到這裏的構造函數的文檔:
https://msdn.microsoft.com/en-us/library/system.drawing.font.font(v=vs.110).aspx

例子:

new Font("font-family", 1.5F, FontStyle.Bold | FontStyle.Underline); 


2)你可以嘗試訪問Label這樣的Font屬性的Size屬性:

championName.Font.Size = 1.5F; 

讓我知道你的發現。

+1

'Size'是隻讀的。 –

+0

@RonBeyer,你是對的。 「大小」是隻讀的。我的錯。 – Ivan

相關問題