2016-05-20 2 views
-1

私が持っているセンターが同じ場所に留まるためには、矩形のXとYをどのように変更する必要がありますか?

Rectangle rect = new Rectangle(
    (int)(someArray[z].rectangleObject.X + 
    ((double)widthOfCell/2) - 
    ((double)targetWidth/2)), 

    (int)(someArray[z].rectangleObject.Y + 
    (double)(heightOfCell/2) - 
    (double)(targetHeight/2)), 

    targetWidth, 

    targetHeight); 

targetWidthと20パーセントによってtargetHeight増加、もしつまり

targetWidth *= 1.2 
targetHeight *= 1.2 

どのように

(int)(someArray[z].rectangleObject.X + 
    ((double)widthOfCell/2) - ((double)targetWidth/2)) 

(int)(someArray[z].rectangleObject.Y + 
    (double)(heightOfCell/2) - (double)(targetHeight/2)) 
はセンターが同じ場所に留まるように変更する必要がありますか?

他の値も変更しないことに注意してください。 someArray[z].rectangleObject.X,someArray[z].rectangleObject.Y,widthOfCellおよびheightOfCellはすべて同じままである。

+0

@スティーブはい、ですが、宿題に関する質問はありません。 –

+0

@ 4castle englified –

+0

@PeterDunihoそれが解決策でした。 –

答えて

0

位置のXとYを計算するために使用している式には、矩形の中心を計算するために必要な各式が既に含まれているようです。私。それぞれ

(int)(someArray[z].rectangleObject.X + ((double)widthOfCell/2) 

と中心のX及びYの

(int)(someArray[z].rectangleObject.Y + (double)(heightOfCell/2) 

、。

これらの数式は、矩形の実際の位置を生成するために矩形の幅と高さの半分を引きます。

幅と高さのみを変更すると、上記の2つの式の計算値は同じままになるため、計算された矩形の中心も同様に維持されます。

つまり、長方形の幅と高さがすべて変更されている場合は、すでに取得している位置式全体を計算するだけで済みます。その目的のための長方形の作品計算するためにあなたの元のコード:your commentに基づいて

Rectangle rect = new Rectangle(
    (int)(someArray[z].rectangleObject.X + ((double)widthOfCell/2) - 
     ((double)targetWidth/2)), 
    (int)(someArray[z].rectangleObject.Y + (double)(heightOfCell/2) - 
     (double)(targetHeight/2)), 
    targetWidth, 
    targetHeight); 

は、あなたの質問に対処し、実際にないようです。

関連する問題