簡體   English   中英

如何在不創建新字體的情況下更改字體樣式?

[英]How to change the fontstyle without creating a new font?

我正在嘗試做一些可能非常簡單的事情,但我嘗試的一切似乎都不起作用。

我正在制作一個 windows forms 應用程序,它只允許您使用充滿不同 fonts 的手預覽一些自定義文本。

我要做的是在選中復選框時將 label 的字體樣式更改為斜體。 在保留當前字體的同時。

“顯示”是我的 label 的名稱。 “Italicscb”是復選框的名稱。

以下是我目前正在使用的代碼:

Private Sub Italicscb_CheckedChanged(sender As Object, e As EventArgs) Handles 
Italicscb.CheckedChanged

    If Italicscb.CheckState = CheckState.Checked Then

        Display.Font = New Font("Arial", 60, FontStyle.Italic)
    Else
        If Italicscb.CheckState = CheckState.Unchecked Then

            Display.Font = New Font("Arial", 60, FontStyle.Bold)
        End If
    End If
End Sub

這工作正常,但它需要我輸入一個新的字體名稱。 這是我不想要的。 我試圖為當前字體分配一個變量並將其插入,但這給了我一個錯誤。

    Dim CF As Font
    CF = Display.Font


    If Italicscb.CheckState = CheckState.Checked Then

        Display.Font = New Font(CF, 60, FontStyle.Italic)
    Else
        If Italicscb.CheckState = CheckState.Unchecked Then

            Display.Font = New Font(CF, 60, FontStyle.Bold)
        End If
    End If
End Sub

我還嘗試在單個字體選項按鈕中放置一個 if then 循環。 沒有錯誤,但是當我選中該框時沒有任何反應。

  if Italicscb.CheckState = CheckState.Checked Then
        Display.Font = New Font("Freehand521 BT", 60, FontStyle.Italic)
    Else
        Display.Font = New Font("Freehand521 BT", 60, FontStyle.Bold)
    End If

如果有人能指出我做錯了什么。 我真的很感激。 順便說一句,我正在為我的工作做這個。

謝謝你。

我的用戶表單的圖像

首先,使用.Checked而不是.CheckState ,這樣可以避免做很多不必要的檢查:

If Italicscb.Checked Then
    'Italic
Else
    'Not italic
End If

現在,如果您只想更改 Display 的 fontStyle(使用現有的字體名稱和大小),您可以使用構造函數Font(Font, FontStyle)創建一個新的 Font,因此您的代碼將是:

Private Sub Italicscb_CheckedChanged(sender As Object, e As EventArgs) Handles Italicscb.CheckedChanged
    If Italicscb.Checked Then
        Display.Font = New Font(Display.Font, FontStyle.Italic)
    Else
        Display.Font = New Font(Display.Font, FontStyle.Regular)
    End If
End Sub

也可以使用優雅的單行獲得相同的結果:

Private Sub Italicscb_CheckedChanged(sender As Object, e As EventArgs) Handles Italicscb.CheckedChanged
    Display.Font = New Font(Display.Font, If(Italicscb.Checked, FontStyle.Italic, FontStyle.Regular))
End Sub

這是 output:

例子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM