私のコード
position.Location = (e.Location + pic1.Location) - bild_posi.Location;
次のようなエラーが表示されます:
the operator "+" isnt compatible with "System.Drawing.Point + System.Drawing.Point"
どうすればこれを修正できますか?
私のコード
position.Location = (e.Location + pic1.Location) - bild_posi.Location;
次のようなエラーが表示されます:
the operator "+" isnt compatible with "System.Drawing.Point + System.Drawing.Point"
どうすればこれを修正できますか?
ポイントをどのように追加するかによって異なります
AddPoints と呼ばれるメソッドと SubtractPoints と呼ばれるメソッドを次のように記述できます。
private Point AddPoints(Point A, Point B)
{
return new Point(A.X + B.X, A.Y + B.Y);
}
private Point SubtractPoints(Point A, Point B)
{
return new Point(A.X - B.X, A.Y - B.Y);
}
そしてそれを次のように使用します
position.Location = SubtractPoints(AddPoints(e.Location,pic1.Location),bild_posi.Location);
このSystem.Drawing.Point
構造体Point
は、2 つのオブジェクトをパラメーターとして受け取る加算演算子のオーバーロードを定義していません。
Point
オブジェクトとオブジェクトを受け入れ、オブジェクトSize
に含まれる数値のペアをSize
オブジェクトの値に加算する加算演算子がありPoint
ます。その機能のドキュメントは、こちらから入手できます。
Point
2 番目のオブジェクトをオブジェクトに変換することで、そのバージョンを使用できSize
ます。Size
構造体は の明示的な変換演算子をPoint
提供するため、これは非常に簡単です。そのため、2 番目Point
のオブジェクトをオブジェクトにキャストするだけですSize
。
position.Location = (e.Location + (Size)pic1.Location) - (Size)bild_posi.Location;
Point
減算演算子は加算演算子と同じ方法で実装されるため、3 番目のオブジェクトについても同じことを行う必要があることに注意してください。
残念ながら、C# で既存の演算子をオーバーロードすることはできませんが、ロジックを内部に含む通常の古い関数を作成し、演算子を使用する代わりにそれを呼び出すことができます。Point
これをクラスの拡張メソッドにすることもできます。
ポイントをグラフ上のx/y座標と考えてください。残念ながら、PointAとPointBを追加して、グラフにPointCを表示することはできません。
目的を達成するには、x座標とy座標を別々に計算する必要があります。
そうは言っても、次のことを試してください
var pointA = new Point(e.Location.X + pic1.Location.X, e.Location.Y + pic1.Location.Y);
var pointB = new Point(pointA.Location.X - bild_posi.Location.X, pointA.Location.Y - bild_posi.Location.Y);
position.Location = pointB;