2016-07-29 14 views
0

私はC#を学んでいますが、私は浮動小数点で複数のポイントをどのようにすることができるのか分かりません。 は例えば、私は、このような点オブジェクトがあります。複数ポイントを浮動小数点に変換する方法は?

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

を要因により、複数のポイントへの最善の方法は何ですか?

P.S.私はこれらの目的のためにスケールマトリックスを使うべきですか?最も簡単な方法は、そのようにやっている

+0

point.Xとpoint.Yを使用し、それを複数使用する必要があります。 –

+0

しかし、それは不快な方法です。多分別の解決策がありますか? (スケールマトリックスの使用を除く) – LmTinyToon

+1

拡張メソッドを使用できます。それを拡張し、乗算のための独自の方法を書く –

答えて

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); 
    } 
} 

次のように拡張子を呼び出す:ちょうどそれが動作するはずです、あなたのプロジェクトのコードにExtentionsクラスを挿入

point = point.Scale(2f); 

編集:X上のフォローアップとして

... 'sのコメント。ライン:

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

はと交換することができます。

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

私はこのことができます願っています。

+0

大きなポイント。しかし、Point Storeが二重になっていることに注意してください。あなたの例ではint型へのキャストがありますが、正しくはありません。 最初のケースでも不快なことはありませんbtw、nice looks – ams4fy

+0

ああ、ちょうど 'system.windows.point'が' system.drawing.point'と違うことに気付きました。それを指摘してくれてありがとう。そしてそれは不快であると言った尋ね者でした。 – MasterXD

+0

実際には「新しい」必要はなく、上の質問と同様に同じ「ポイント」を返すだけです。 –

関連する問題