问题描述
我有一种将文本转换为位图的方法:
private Bitmap ConvertTextToImage(string text,FontFamily fontFamily,float fontSize,FontStyle fontStyle,StringFormat stringFormat,float MaxWidth,float MaxHeight,Color backgroundColor,Color foregroundColor)
{
// some code...
}
我想使除text
,fontFamily
和fontSize
之外的所有参数都是可选的。但是,我不知道如何创建编译时常量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?
的默认值。
您可以分配null
或default
并在方法内部初始化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.
}