0


winform自定义控件(gdi+)(10)——font类的用法

1、FontStyle(指定应用到文本的字形信息,粗体、斜体等)

for(int i =0; i <6; i++){TextBox textBox =newTextBox();Font font =default;
                textBox.Location =newPoint(30* i,30* i);switch(i){case0:
                        font =newFont(textBox1.Font, FontStyle.Regular);//常规break;case1:
                        font =newFont(textBox1.Font, FontStyle.Bold);//粗体break;case2:
                        font =newFont(textBox1.Font, FontStyle.Italic);//斜体break;case3:
                        font =newFont(textBox1.Font, FontStyle.Strikeout);//有一条线穿过中部break;case4:
                        font =newFont(textBox1.Font, FontStyle.Underline);//下划线break;case5:
                        font =newFont(textBox1.Font, FontStyle.Underline | FontStyle.Bold);//下划线和粗体的组合,按位组合break;}
                textBox.Text ="我是中国人";
                textBox.Font = font;this.Controls.Add(textBox);}Type type =typeof(FontStyle);IEnumerable<Attribute> attributes = type.GetCustomAttributes();
            Console.WriteLine(attributes.First()isSystem.FlagsAttribute ?true:false);//被FlagsAttribute标记的枚举,可以实现组合

在这里插入图片描述

2、FontFamily
定义有着相似的基本设计但在形式上有某些差异的一组字样(就是指宋体还是楷体等)

FontFamily[] fontFamilies = FontFamily.Families;//直接获取所有字体int index =0;for(int i =0; i < fontFamilies.Length; i++){if(fontFamilies[i].Name =="宋体"|| fontFamilies[i].Name =="黑体"|| fontFamilies[i].Name =="Times New Roman"|| fontFamilies[i].Name =="隶书"|| fontFamilies[i].Name =="楷体"){
                    index++;TextBox textBox =newTextBox();FontFamily fontFamily = fontFamilies[i];

                    textBox.Location =newPoint(30* index,30* index);
                    textBox.Text = fontFamilies[i].Name;
                    textBox.Font =newFont(fontFamily,10);this.Controls.Add(textBox);}}

在这里插入图片描述
3、GraphicsUnit
1)七种单位
在这里插入图片描述
2)
1英寸=2.54cm
3)控件的Location和size属性都是以pixel为单位的

3)
在这里插入图片描述

for(int i =0; i <7; i++){TextBox  textBox =newTextBox();Font font =default;
                textBox.Location =newPoint(50* i,50* i);switch(i){case0:
                        font =newFont("宋体",10,GraphicsUnit.Point );//break;case1:
                        font =newFont("宋体",10, GraphicsUnit.Display );//此处报错了break;case2:
                        font =newFont("宋体",10, GraphicsUnit.Document);//break;case3:
                        font =newFont("宋体",1, GraphicsUnit.Inch);//break;case4:
                        font =newFont("宋体",10, GraphicsUnit.Millimeter);//break;case5:
                        font =newFont("宋体",10, GraphicsUnit.Pixel);break;case6:
                        font =newFont("宋体",10, GraphicsUnit.World);break;}
                textBox.Text ="我是中国人";
                textBox.Font = font;
                Console.WriteLine($"{i}:{textBox.Font.Size }{textBox.Font.Unit .ToString ()}:{textBox.Font .SizeInPoints  }points");this.Controls.Add(textBox);}
0:10Point:10points
1:8.25Point:8.25points//这个是报错的结果,不考虑2:10Document:2.4points
3:1Inch:72points
4:10Millimeter:28.34645points
5:10Pixel:7.5points
6:10World:7.5points

font.sizeinpoint属性可以看出来,当前的单位转换为Point是多少值。
默认情况是,字体使用的单位是point。
4)gdiCharSet(获取一个字节值,该值指定此 Font 使用的 GDI 字符集。)

在这里插入图片描述
但是这里设置了属性,但是没有起到作用。

5)GdiVerticalFont(获取一个布尔值,该值指示此 Font 是否从 GDI 垂直字体派生)

在这里插入图片描述
在这里插入图片描述
可以看到我这个字变成了从左到右排列了

6)Font.Height(行距指的是字体的高度加上两行字体之间的空隙)
获取字体的行距

7) myFont.GetHeight(返回像素为单位的字体行距)

publicvoidGetHeight_Example(PaintEventArgs e){// Create a Font object.Font myFont =newFont("Arial",16);//Draw text to the screen with myFont.
    e.Graphics.DrawString("This is the first line",myFont,
        Brushes.Black,newPointF(0,0));//Get the height of myFont.float height = myFont.GetHeight(e.Graphics);//Draw text immediately below the first line of text.
    e.Graphics.DrawString("This is the second line",
        myFont,
        Brushes.Black,newPointF(0, height));}

摘抄自Msdn

在这里插入图片描述

标签:

本文转载自: https://blog.csdn.net/qq_34059233/article/details/115394100
版权归原作者 c#上位机 所有, 如有侵权,请联系我们删除。

“winform自定义控件(gdi+)(10)——font类的用法”的评论:

还没有评论