我可以用Pen.DashPattern做更多的事情吗?



因此,我从仅使用颜色作为参数创建笔开始.
除了分配float[]之外,我可以用破折号做什么?

我尝试使用比较运算符.
检查它是否为空结果:OutOfMemoryException .

检查潜在现有分配的长度也失败 - 相同的异常。

问题始于尝试使用Buffer.BlockCopy()将数据从一行float[,]传输到笔的破折号图案。

此行为是设计使然。

如果您尚未指定不同于默认DashStyle.SolidColor的破折号样式或将 Pen.DashPattern 设置为 float[] 值,因此,将 Pen.DashStyle 设置为 DashStyle.Custom ,则不会设置Pen.DashPattern,本机 GdipGetPenDashCount 方法将返回Status != GDIP.Ok = 0

如果未设置短划线计数,则默认行为是引发 GDI+ 异常,在本例中为OutOfMemoryException

您可以做的是测试笔DashStyle并尝试仅在DashStyle != DashStyle.Solid时获取其DashPattern(显式设置此样式不会创建DashPattern):

if (pen.DashStyle != DashStyle.Solid)
{
    Console.WriteLine(pen.DashStyle);
    pen.DashPattern.ToList().ForEach(f => Console.WriteLine(f));
}

相关内容

  • 没有找到相关文章

最新更新