2012-07-26 49 views

回答

5

這取決於你想怎麼加點一起

你可以寫一個方法叫做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); 
+0

+1以使用這些方法。可重複使用,比我的解決方案更乾淨 – jsmith 2012-07-26 14:05:04

1

System.Drawing.Point structure未定義以兩個Point對象爲參數的加法運算符的超載。

有一個接受Point對象和對象Size加法運算符,然後將所述一對包含在Size對象到對象Point的值的數字。該功能的文檔可用here

你可以通過你的第二個Point對象轉換爲Size對象使用該版本。這是很容易的,因爲Size結構提供了一個explicit conversion operator for Point,因此,所有你需要做的就是投你第二Point對象到Size對象:

position.Location = (e.Location + (Size)pic1.Location) - (Size)bild_posi.Location; 

注意,我必須做同樣的事情,第三Point對象,因爲減法運算符的實現方式與加法運算符相同。

不幸的是,你不能重載在C#中現有運營商,但你可以創建一個包含內部邏輯一個普通的舊函數,然後調用而不是使用運營商。你甚至可以將它作爲Point類的擴展方法。

編輯:Nuts, it turns out I've answered this one already

0

將一個點想象爲圖形上的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;