编译时常量StringFormat

问题描述

我有一种将文本转换为位图的方法:

private Bitmap ConvertTextToImage(string text,FontFamily fontFamily,float fontSize,FontStyle fontStyle,StringFormat stringFormat,float MaxWidth,float MaxHeight,Color backgroundColor,Color foregroundColor)
{
    // some code...
}

我想使除textfontFamilyfontSize之外的所有参数都是可选的。但是,我不知道如何创建编译时常量StringFormat。我希望它默认情况下像new StringFormat()

解决方法

在您的情况下,您可以将addConsNode设置为默认值,然后检查null并将其替换为您想要的默认值。 >

这很容易通过示例进行演示:

null

或者(在许多情况下更灵活)重载具有所有参数,然后提供缺少参数的其他重载,使用所有参数调用版本,并为缺失的参数传递适当的值:

private Bitmap ConvertTextToImage(string text,FontFamily fontFamily,float fontSize,FontStyle fontStyle,StringFormat stringFormat = null,float MaxWidth = 10,float MaxHeight = 10,Color backgroundColor = default,Color foregroundColor = default)
{
    if (stringFormat == null)
        stringFormat = new StringFormat(); // Or whatever default you want.
    // some code...
}

以您的示例为例,我认为第二种方法会更容易,因为您还有其他一些参数(private Bitmap ConvertTextToImage(string text,float MaxWidth,float MaxHeight,Color backgroundColor,Color foregroundColor) { return ConvertTextToImage(text,fontFamily,fontSize,fontStyle,new StringFormat(),MaxWidth,MaxHeight,backgroundColor,foregroundColor); } 个参数),这些参数除了使用Color关键字外不能具有默认值。 / p>

如果要检查这些值,请在构造函数中执行以下操作:

default

这仅在您永远不想传递RGB和透明度值都为零的颜色时才有效,因为这是if (backgroundColor == default) backgroundColor = Color.Beige; // Who doesn't love beige? 的默认值。

,

您可以分配nulldefault并在方法内部初始化stringFormat

private Bitmap ConvertTextToImage(string text,StringFormat stringFormat = default,float MaxWidth = default,float MaxHeight = default,Color foregroundColor = default)
{
   if (stringFormat == null)
      stringFormat = new StringFormat();

   // ...other code.
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...