我正在編寫一個Java程序,它非常類似於Microsoft Paint。它可以繪製四種不同的形狀:線條,橢圓形,矩形和正方形。我非常接近完成這一點,但我堅持繪製正方形的邏輯。通過拖動鼠標繪製一個方塊
繪製這些形狀時有兩點涉及。第一個Point(point1)是當用戶按下鼠標按鈕,第二個Point(point2)是當用戶在畫布上拖動鼠標時。我相信繪製矩形和方形應該非常相似,但是讓我困惑的部分是繪製正方形時,兩邊的長度相等,所以point2並不完全位於鼠標所在的位置。
下面是參考fillRect()方法的標題:
fillRect(x, y, width, height)
我給繪製矩形功能代碼如下:
g.fillRect((((point1.x < point2.x) ? point1.x : point2.x)),
((point1.y < point2.y) ? point1.y : point2.y),
Math.abs(point2.x - point1.x),
Math.abs(point2.y - point1.y));
我使用相同的代碼用於繪製平方除改變試圖高度參數等於寬度參數,因爲正方形具有相等長度的邊:
g.fillRect((((point1.x < point2.x) ? point1.x : point2.x)),
((point1.y < point2.y) ? point1.y : point2.y),
Math.abs(point2.x - point1.x),
Math.abs(point2.x - point1.x)); //same as width
我不知道什麼問題是使寬度和高度相等。它向下向左或向右繪製時起作用,但當然,如果向下拉直,形狀不會擴展。點擊並拖動不起作用;廣場簡單地沿着Y軸向上移動,而不是展開。
任何人都可以在正確的方向上指出我從兩點繪製正方形的邏輯嗎?
如果需要,我可以更好地解釋我的代碼。
爲了更快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –