Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET System.Drawing.Font-获取可用的大小和样式_C#_.net_Fonts_Size_System.drawing - Fatal编程技术网

C# .NET System.Drawing.Font-获取可用的大小和样式

C# .NET System.Drawing.Font-获取可用的大小和样式,c#,.net,fonts,size,system.drawing,C#,.net,Fonts,Size,System.drawing,我有一个组合,允许用户选择字体名称 第二个应该显示字体的可用大小。第三个必须显示可用的样式 问题:如何检索System.Drawing.Font支持的选定尺寸和样式 您可以使用该类检索可用字体,然后如图所示枚举它们 InstalledFontCollection InstalledFontCollection=new InstalledFontCollection(); //获取FontFamily对象的数组。 fontFamilies=installedFontCollection.Famil

我有一个组合,允许用户选择字体名称

第二个应该显示字体的可用大小。第三个必须显示可用的样式

问题:如何检索System.Drawing.Font支持的选定尺寸和样式

您可以使用该类检索可用字体,然后如图所示枚举它们

InstalledFontCollection InstalledFontCollection=new InstalledFontCollection();
//获取FontFamily对象的数组。
fontFamilies=installedFontCollection.Families;
//下面的循环创建了一个以逗号分隔的大字符串
//所有字体系列名称的列表。
int count=fontFamilies.Length;
对于(int j=0;j
我今天试图找到一个好看的字体系列,我使用下面的代码列举所有字体系列,并将它们打印在一张图像中,以便更容易比较哪种字体看起来好看

分享如下:

        Bitmap bitmapImage = new Bitmap(width: 1600, height: 8000);
        using (Graphics g = Graphics.FromImage(bitmapImage))
        {
            var imageRect = new Rectangle(x: 0, y: 0, width: 1600, height: 8000);

            System.Drawing.Text.InstalledFontCollection installedFontCollection = new System.Drawing.Text.InstalledFontCollection();
            FontFamily[] fontFamilies = installedFontCollection.Families;

            var format = new StringFormat();
            format.Alignment = StringAlignment.Near;
            format.LineAlignment = StringAlignment.Near;
            format.FormatFlags = StringFormatFlags.NoWrap;

            int verticalOffset = 0;
            for (int j = 0; j < fontFamilies.Length; ++j)
            {
                using (var font = new Font(fontFamilies[j].Name, 40, FontStyle.Regular, GraphicsUnit.Pixel))
                {
                    // Height
                    var textSize = g.MeasureString(fontFamilies[j].Name, font);
                    int textWidth = (int)Math.Ceiling(textSize.Width + 10);
                    int textHeight = (int)Math.Ceiling(textSize.Height + 10);

                    // Draw text
                    Rectangle textRect = new Rectangle(x: j % 2 == 0 ? 0 : 800, y: verticalOffset, width: textWidth, height: textHeight);
                    g.FillRectangle(new SolidBrush(BackgroundColor), textRect);
                    g.DrawString(fontFamilies[j].Name, font, new SolidBrush(PercentageTextColor), textRect, format);
                    g.Save();

                    if (j % 2 == 1)
                    {
                        verticalOffset += textHeight;
                    }
                }
            }
        }

        bitmapImage.Save(this.Response.OutputStream, ImageFormat.Png);


        // then do whatever you like with this bitmapImage, save it to local, etc.
Bitmap-bitmapImage=新位图(宽度:1600,高度:8000);
使用(Graphics g=Graphics.FromImage(bitmapImage))
{
var imageRect=新矩形(x:0,y:0,宽度:1600,高度:8000);
System.Drawing.Text.InstalledFontCollection InstalledFontCollection=新建System.Drawing.Text.InstalledFontCollection();
FontFamily[]fontFamilies=installedFontCollection.Families;
var format=新的StringFormat();
format.Alignment=StringAlignment.Near;
format.LineAlignment=StringAlignment.Near;
format.FormatFlags=StringFormatFlags.NoWrap;
int垂直偏移=0;
对于(int j=0;j
我已经有了可用的字体名称组合-但如何获得字体支持的大小和样式?
FontFamily
有一个
IsStyleAvailable
方法:返回bool。不确定字体大小。如果是轮廓字体(TrueType等),则任何大小都可以。我不确定这是如何应用于位图字体的。您必须返回到Windows版本3才能找到只有特定大小的字体。设备字体。TrueType字体可以呈现任何大小。并支持合成不可用的样式。System.Drawing.Font仅支持TrueType字体。可能重复
        Bitmap bitmapImage = new Bitmap(width: 1600, height: 8000);
        using (Graphics g = Graphics.FromImage(bitmapImage))
        {
            var imageRect = new Rectangle(x: 0, y: 0, width: 1600, height: 8000);

            System.Drawing.Text.InstalledFontCollection installedFontCollection = new System.Drawing.Text.InstalledFontCollection();
            FontFamily[] fontFamilies = installedFontCollection.Families;

            var format = new StringFormat();
            format.Alignment = StringAlignment.Near;
            format.LineAlignment = StringAlignment.Near;
            format.FormatFlags = StringFormatFlags.NoWrap;

            int verticalOffset = 0;
            for (int j = 0; j < fontFamilies.Length; ++j)
            {
                using (var font = new Font(fontFamilies[j].Name, 40, FontStyle.Regular, GraphicsUnit.Pixel))
                {
                    // Height
                    var textSize = g.MeasureString(fontFamilies[j].Name, font);
                    int textWidth = (int)Math.Ceiling(textSize.Width + 10);
                    int textHeight = (int)Math.Ceiling(textSize.Height + 10);

                    // Draw text
                    Rectangle textRect = new Rectangle(x: j % 2 == 0 ? 0 : 800, y: verticalOffset, width: textWidth, height: textHeight);
                    g.FillRectangle(new SolidBrush(BackgroundColor), textRect);
                    g.DrawString(fontFamilies[j].Name, font, new SolidBrush(PercentageTextColor), textRect, format);
                    g.Save();

                    if (j % 2 == 1)
                    {
                        verticalOffset += textHeight;
                    }
                }
            }
        }

        bitmapImage.Save(this.Response.OutputStream, ImageFormat.Png);


        // then do whatever you like with this bitmapImage, save it to local, etc.