私のコード
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ます。その機能のドキュメントは、こちらから入手できます。
Point2 番目のオブジェクトをオブジェクトに変換することで、そのバージョンを使用でき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;