2016-07-29 48 views
0

我正在学习c#,我不明白我怎样才能多点浮动因子。 例如,我有这样的点对象:如何通过浮点因子多点?

System.Windows.Point point = new System.Windows.Point(1, 1); 
point = point * 2; // error 

什么是由因素多点的最佳方式?

P.S.我应该为这些目的使用比例矩阵吗? (这似乎太贵了)

+0

您应该使用point.X和point.Y并将其倍数。 – 2016-07-29 11:14:06

+0

但这是不舒服的方式。也许还有另一种解决方案? (除了使用比例矩阵) – LmTinyToon

+1

您可以使用扩展方法。扩展它并编写自己的乘法方法 – 2016-07-29 11:17:40

回答

2

最简单的方法是做它是这样:

point = new System.Windows.Point(point.X * scale, point.Y * scale); 

但是你在你的评论中提及“但它是不舒服的方式”,那么为什么不提出延期?

static class Extentions 
{ 
    public static System.Windows.Point Scale(this System.Windows.Point point, float scale) 
    { 
     return new System.Windows.Point(point.X * scale, point.Y * scale); 
    } 
} 

然后调用进一步扩展这样的:

point = point.Scale(2f); 

只需插入Extentions类到您的项目的代码,那么它应该工作。

编辑:

作为X上的一个后续...的评论。行:

return new System.Windows.Point(point.X * scale, point.Y * scale); 

可以交换:

point.X *= scale; 
point.T *= scale; 
return point; 

我希望这有助于。

+0

伟大的一点。但是请注意,Point存储的是双精度值,在你的例子中你有一个int值,不太正确。 即使第一个例子btw也没有什么不舒服,看起来不错 – ams4fy

+0

啊,我刚刚注意到'system.windows.point'与'system.drawing.point'不同。感谢您指出这一点。这是提问者说不舒服。 – MasterXD

+0

实际上不需要“新”,只是返回相同的“点”,就像上面的问题。 – 2016-07-29 11:35:59