C# 我能用Pen.DashPattern做点什么吗?

C# 我能用Pen.DashPattern做点什么吗?,c#,.net,winforms,gdi+,C#,.net,Winforms,Gdi+,所以,我从创建只使用颜色作为参数的钢笔开始。 对于指定浮点[]的DashPattern,我可以做什么 我尝试使用比较运算符检查它是否为null。结果:OutOfMemoryException。 检查可能存在的分配的长度也失败-相同的异常 问题源于试图使用Buffer.BlockCopy将数据从一行float[,]传输到画笔的DashPattern。此行为是出于设计 如果未指定与默认的DashStyle.SolidColor不同的值,或未将设置为float[]值,则设置为DashStyle.Cus

所以,我从创建只使用颜色作为参数的钢笔开始。 对于指定浮点[]的DashPattern,我可以做什么

我尝试使用比较运算符检查它是否为null。结果:OutOfMemoryException。 检查可能存在的分配的长度也失败-相同的异常


问题源于试图使用Buffer.BlockCopy将数据从一行float[,]传输到画笔的DashPattern。

此行为是出于设计

如果未指定与默认的
DashStyle.SolidColor不同的值,或未将设置为
float[]
值,则设置为
DashStyle.Custom
,未设置
Pen.DashPattern
,本机的
GdipGetPenDashCount
方法将返回
状态!=GDIP.Ok=0

未设置破折号计数时,默认行为是引发GDI+异常,在本例中是一个OutOfMemoryException

您可以做的是测试画笔
DashStyle
,仅当
DashStyle!=DashStyle.Solid
(明确设置此样式不会创建
DashPattern
):


这种行为是故意的

如果未指定与默认的
DashStyle.SolidColor不同的值,或未将设置为
float[]
值,则设置为
DashStyle.Custom
,未设置
Pen.DashPattern
,本机的
GdipGetPenDashCount
方法将返回
状态!=GDIP.Ok=0

未设置破折号计数时,默认行为是引发GDI+异常,在本例中是一个OutOfMemoryException

您可以做的是测试画笔
DashStyle
,仅当
DashStyle!=DashStyle.Solid
(明确设置此样式不会创建
DashPattern
):


这没用?它包含的示例代码没有一个
缓冲区。BlockCopy
可见。这完全正确吗?来自文档:“获取或设置自定义破折号和空格的数组。”。我不知道或者不知道怎么去。我只能设定。总是一样的例外。我已经用“正常”的方式做了,但仍然想知道我的问题在哪里。。。一定有什么我不明白的。在事情解决之前什么都得不到。如果没有DashPattern集,则无法获取它。没有定案,这是我能理解的。但是为什么我不能检查它是否为空?属性只是在我编写以下内容时引发异常:.DashPattern==null。不知道。我看不到你的代码。代码不起作用吗?它包含的示例代码没有一个
缓冲区。BlockCopy
可见。这完全正确吗?来自文档:“获取或设置自定义破折号和空格的数组。”。我不知道或者不知道怎么去。我只能设定。总是一样的例外。我已经用“正常”的方式做了,但仍然想知道我的问题在哪里。。。一定有什么我不明白的。在事情解决之前什么都得不到。如果没有DashPattern集,则无法获取它。没有定案,这是我能理解的。但是为什么我不能检查它是否为空?属性只是在我编写以下内容时引发异常:.DashPattern==null。不知道。我看不到你的代码。
if (pen.DashStyle != DashStyle.Solid)
{
    Console.WriteLine(pen.DashStyle);
    pen.DashPattern.ToList().ForEach(f => Console.WriteLine(f));
}