2012-02-03 35 views
1

我使用的,除了一條線,我想不出如何轉換http://www.developerfusion.com/tools/convert/csharp-to-vb/如何這行代碼轉換,從C#到vb.net

一切進展順利轉換代碼塊從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(值作爲System.Drawing.PointF)作爲 System.Drawing.Point「值」

如果沒有指定」。

+0

也許VB.Net認爲Point.Round是一個函數,而不是一個枚舉的值,從而詢問你一個參數。 當你在'(pts,'?)後面輸入'Point.'時,在你的智能感知(或相同)中會發生什麼? – Eregrith 2012-02-03 09:43:04

回答

2

這應該轉換的PointF數組到一點:

result.DrawPolyline(Array.ConvertAll(Of PointF, Point)(pts, Function(p) Point.Round(p)), True, New Bgr(Color.Red), 5) 

您需要通過PointFPoint.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

Dim pts As PointF() = {New PointF(123.23, 12345.23)} 
Dim r = Array.ConvertAll(Of PointF, Point)(
      pts, 
      AddressOf Point.Round) 
1

的第二個參數Array.ConvertAll應該是一個方法用於轉換(見here

它可能是該行缺少AddressOfPoint.Round調用之前,因此該方法被作爲委託,而不是被執行過,具體如下:

result.DrawPolyline(Array.ConvertAll(Of PointF, Point)(pts, AddressOf Point.Round), True, New Bgr(Color.Red), 5)