我正在使用http://www.developerfusion.com/tools/convert/csharp-to-vb/
将代码块从C#转换为VB.NET一切顺利,除了一行,我无法想出如何转换:
C#来源
result.DrawPolyline(Array.ConvertAll<PointF, Point>(pts, Point.Round), true, new Bgr(Color.Red), 5);
使用转换器提供此
result.DrawPolyline(Array.ConvertAll(Of PointF, Point)(pts, Point.Round), True, New Bgr(Color.Red), 5)
上述行中的错误是:
未为“公共共享”的参数“值”指定参数 函数Round(value As System.Drawing.PointF)As System.Drawing.Point”。
答案 0 :(得分:2)
这应该将PointF数组转换为Point:
result.DrawPolyline(Array.ConvertAll(Of PointF, Point)(pts, Function(p) Point.Round(p)), True, New Bgr(Color.Red), 5)
您需要将PointF
传递给Point.Round。
经过测试:
Dim pts As PointF() = {New PointF(123.23, 12345.23)}
Dim r = Array.ConvertAll(Of PointF, Point)(
pts,
Function(p) Point.Round(p))
如果您将代理传递给Point.Round
,如@Jon所述,它也会有效:
Dim pts As PointF() = {New PointF(123.23, 12345.23)}
Dim r = Array.ConvertAll(Of PointF, Point)(
pts,
AddressOf Point.Round)
答案 1 :(得分:1)
Array.ConvertAll
的第二个参数应该是用于转换的方法(参见here)
在AddressOf
调用之前,该行可能缺少Point.Round
,因此该方法作为委托传递,而不是被执行,如下所示:
result.DrawPolyline(Array.ConvertAll(Of PointF, Point)(pts, AddressOf Point.Round), True, New Bgr(Color.Red), 5)