使用ToPointsArray将T的列表转换为Array [英] Converting list of T to Array using ToPointsArray

查看:66
本文介绍了使用ToPointsArray将T的列表转换为Array的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个C#代码

                if ( shapeChecker.IsCircle( edgePoints, out center, out radius ) )
                {
                    g.DrawEllipse( yellowPen,
                        (float) ( center.X - radius ), (float) ( center.Y - radius ),
                        (float) ( radius * 2 ), (float) ( radius * 2 ) );
                }
                else
                {
                    List<IntPoint> corners;

                    // is triangle or quadrilateral
                    if ( shapeChecker.IsConvexPolygon( edgePoints, out corners ) )
                    {
                        // get sub-type
                        PolygonSubType subType = shapeChecker.CheckPolygonSubType( corners );

                        Pen pen;

                        if ( subType == PolygonSubType.Unknown )
                        {
                            pen = ( corners.Count == 4 ) ? redPen : bluePen;
                        }
                        else
                        {
                            pen = ( corners.Count == 4 ) ? brownPen : greenPen;
                        }

                        g.DrawPolygon( pen, ToPointsArray( corners ) );
                    }
                }

 

运行良好.但是当我使用等效的VB.NET代码时.这不起作用-

 

it's working well. But when I use an equivalent VB.NET code. This doesn't work-

        ' locate objects using blob counter
        Dim blobCounter As New BlobCounter()
        blobCounter.ProcessImage(inv_img)
        Dim blobs As Blob() = blobCounter.GetObjectsInformation()
        ' create Graphics object to draw on the image and a pen
        Dim g As Graphics = Graphics.FromImage(inv_img)
        Dim bluePen As New Pen(Color.Blue, 2)
        ' check each object and draw circle around objects, which
        ' are recognized as circles
        Dim i As Integer = 0, n As Integer = blobs.Length
        While i < n
            Dim edgePoints As List(Of IntPoint) = blobCounter.GetBlobsEdgePoints(blobs(i))
            Dim corners As List(Of IntPoint) = PointsCloud.FindQuadrilateralCorners(edgePoints)
            g.DrawPolygon(bluePen, ToPointsArray(corners))
            i += 1
        End While

该错误指向ToPointsArray函数.该如何解决?

The error is pointed on ToPointsArray function. How to solve this?

推荐答案

那不是等效的,仅使用有形的VB instanc转换器就可以了.

That is not the equivalent, simply using VB instanc converter from tangible I get this. 

		If shapeChecker.IsCircle(edgePoints, center, radius) Then
					g.DrawEllipse(yellowPen, CSng(center.X - radius), CSng(center.Y - radius), CSng(radius * 2), CSng(radius * 2))
				Else
					Dim corners As List(Of IntPoint) = Nothing

					' is triangle or quadrilateral
					If shapeChecker.IsConvexPolygon(edgePoints, corners) Then
						' get sub-type
						Dim subType As PolygonSubType = shapeChecker.CheckPolygonSubType(corners)

						Dim pen As Pen

						If subType Is PolygonSubType.Unknown Then
							pen = If(corners.Count = 4, redPen, bluePen)
						Else
							pen = If(corners.Count = 4, brownPen, greenPen)
						End If

						g.DrawPolygon(pen, ToPointsArray(corners))
					End If
				End If


这篇关于使用ToPointsArray将T的列表转换为Array的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆