我想创建一个与另一方不同的Rectangle
。
(描绘的所有线都是直线)
生成普通矩形,如new Rectangle(50 /*LocationX*/, 50 */LocationY*/, 50 /*SizeX*/, 100 /*SizeY*/);
,如下所示:
但是,我想要一个像new Rectangle(50 /*LocationX*/, 50 */LocationY*/, 25 /*25 from the centre point for the red line*/, 30 /*30 from the centre point for the blue line*/, 50 /*50 from centre for green line*/, 100 /*100 from centre for yellow line*/);
换句话说,我实际上希望保持形状相同但移动中心点。
我该怎么做?
答案 0 :(得分:2)
在java中,rectangles由左上角坐标,宽度和高度定义。
如果我在这里理解你的问题是什么描述了你的矩形:
pointX
,pointY
矩形中某点的坐标。命名点。distanceToTop
距点到矩形顶部的距离(绿线)。distanceToBottom
距点到矩形底部(黄线)的距离。distanceToLeft
距点到矩形左侧(红线)的距离。distanceToRight
距点到矩形右侧(蓝线)的距离。(pointX - distanceToLeft, pointY - distanceToTop)
整个矩形的大小为(宽度,高度):
(distanceToLeft + distanceToRight, distanceToTop + distanceToBottom)
所以你的实例将是:
Rectangle r = new Rectangle(
pointX - distanceToLeft, // upper-left corner X
pointY - distanceToTop, // upper-left corner Y
distanceToLeft + distanceToRight, // width
distanceToTop + distanceToBottom // height
);