2016-08-02 2 views
2

Je pense que c'est une question simple mais je n'arrive pas à la comprendre.C# - Convertir PointF en Point

//verifica qual o ponto mais proximo do centroide_circulo 
PointF ponto_mais_proximo = pontos_medios.OrderBy(x => Math.Pow(x.X - centroide_circulo.X, 2) + Math.Pow(x.Y - centroide_circulo.Y, 2)).FirstOrDefault(); 

LineSegment2D linha_circulo_vertice = new LineSegment2D(centroide_circulo, ponto_mais_proximo); 

ne convertit pas 'System.Drawing.PointF' à 'System.Drawing.Point'

Ma question est de savoir comment puis-je convertir? ponto_mais_proximo dans la première ligne de code doit être PointF.

+1

de quel type est 'pontos_medios'? Tout changement que vous pourriez traduire vos commentaires en anglais, il est un peu plus facile de lire les commentaires potentiels qui pourraient avoir un avantage à la question à portée de main – Icepickle

+6

Utilisez Point.Round (PointF): https://msdn.microsoft.com/fr us/library/system.drawing.point.round (v = vs.110) .aspx –

Répondre

6

La meilleure façon de le faire est d'utiliser Point.Round():

LineSegment2D linha_circulo_vertice = 
    new LineSegment2D(centroide_circulo, Point.Round(ponto_mais_proximo)); 

convertit le PointF spécifié à un objet point en arrondissant les valeurs de point à l'entier le plus proche.

+0

Eh bien, vous apprenez quelque chose de nouveau tous les jours, une méthode géniale – TheLethalCoder