首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaFX矩形从左上角以外的点旋转枢轴

JavaFX是一个用于创建富客户端应用程序的Java库。它提供了丰富的图形界面组件和功能,可以用于开发跨平台的桌面应用程序。

矩形是JavaFX中的一个基本形状,可以通过Rectangle类来创建。矩形可以通过设置其宽度、高度、位置和颜色等属性来进行自定义。

旋转枢轴是指矩形绕着某个点进行旋转的中心点。在JavaFX中,可以使用Rotate类来实现矩形的旋转操作。通过设置旋转角度和旋转中心点,可以实现矩形的旋转效果。

以下是完善且全面的答案:

JavaFX矩形从左上角以外的点旋转枢轴是指在JavaFX应用程序中,通过设置矩形的旋转角度和旋转中心点,使矩形绕着某个点进行旋转。旋转枢轴可以是矩形外部的任意点,不限于左上角。

矩形的旋转可以通过Rotate类来实现。Rotate类是JavaFX中用于表示旋转操作的类,它可以设置旋转的角度、旋转中心点和旋转轴等属性。

在JavaFX中,可以通过以下步骤实现矩形的旋转:

  1. 创建矩形对象:使用Rectangle类创建一个矩形对象,并设置其宽度、高度、位置和颜色等属性。
  2. 创建旋转对象:使用Rotate类创建一个旋转对象,并设置旋转的角度和旋转中心点。旋转角度可以使用setAngle()方法进行设置,旋转中心点可以使用setPivotX()和setPivotY()方法进行设置。
  3. 应用旋转效果:将旋转对象应用到矩形对象上,可以使用矩形对象的getTransforms()方法获取其变换列表,并通过add()方法将旋转对象添加到变换列表中。

示例代码如下:

代码语言:txt
复制
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.transform.Rotate;
import javafx.stage.Stage;

public class RectangleRotationExample extends Application {
    @Override
    public void start(Stage primaryStage) {
        // 创建矩形对象
        Rectangle rectangle = new Rectangle(100, 100, Color.BLUE);
        rectangle.setX(100);
        rectangle.setY(100);

        // 创建旋转对象
        Rotate rotate = new Rotate();
        rotate.setAngle(45); // 设置旋转角度
        rotate.setPivotX(200); // 设置旋转中心点的X坐标
        rotate.setPivotY(200); // 设置旋转中心点的Y坐标

        // 应用旋转效果
        rectangle.getTransforms().add(rotate);

        // 创建场景
        Group root = new Group(rectangle);
        Scene scene = new Scene(root, 400, 400);

        // 显示窗口
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

在上述示例代码中,我们创建了一个蓝色的矩形,并将其旋转角度设置为45度,旋转中心点设置为(200, 200)。然后将旋转对象应用到矩形对象上,并将矩形添加到场景中显示出来。

推荐的腾讯云相关产品:腾讯云服务器(CVM)、腾讯云容器服务(TKE)、腾讯云数据库(TencentDB)等。你可以通过访问腾讯云官网(https://cloud.tencent.com/)获取更多关于这些产品的详细信息和使用指南。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

自定义控件详解(三):Canvas效果变换

paint);    从下可见绿色框是平移(100,100)后新画布位置,多出界面的部分不再显示    黑色矩形是在新画布位置(绿色框)左上角为原点,(100,100)位置绘制 ?...paint); //再绘制一个蓝色矩形 ,看看这个矩形是以平移前画布左上角为原点还是以平移后画布左上角为原点 paint.setColor(Color.BLUE...可见当画布进行转换(平移、旋转等)操作之后,往后drawXXX时候都以新画布位置为准     那么,比如我只想让第二个矩形所在画布平移,而往后都是以原来画布为准,怎么办,难道还需要逆向操作,怎么平移出去再怎么平移回来么...,paint); canvas.restore(); //恢复成栈顶保存画布状态 //再绘制一个蓝色矩形 ,看看这个矩形是以平移前画布左上角为原点还是以平移后画布左上角为原点...) 第一个构造函数直接输入旋转度数,正数是顺时针旋转,负数指逆时针旋转,它旋转中心是原点(0,0) 第二个构造函数除了度数以外,还可以指定旋转中心坐标(px,py) Paint

82150

opencv 7 -- 边界矩形

有两类边界矩形 一、直边界矩形—boundingRect() 一个直矩形(就是没有旋转矩形)。它不会考虑对象是否旋转。 所以边界矩形面积不是最小。...可以使用函数 cv2.boundingRect() 查找得到 (x,y)为矩形左上角坐标,(w,h)是矩形宽和高 x,y,w,h = cv2.boundingRect(cnt) cv2.boundingRect...min_rect[0][1]),(min_rect[1][0],min_rect[1][1]),0) 其中包含矩形左上角坐标(x,y),矩形宽和高(w,h),以及旋转角度。...[1][1]),0) box = cv2.boxPoints(min_rect) minAreaRect函数返回矩形中心坐标,长宽,旋转角度[-90,0),当矩形水平或竖直时均返回-...也就是说,在这里,width与height不是按照长短来定义 在opencv中,坐标系原点在左上角,相对于x轴,逆时针旋转角度为负,顺时针旋转角度为正。在这里,θ∈(-90度,0]

1.7K20

彻底理解position与anchorPoint

继续扩展,很明显,白纸旋转形态随图钉位置不同而不同,图钉订在白纸正中间与左上角时分别造就了两种旋转形态,这是由图钉(anchorPoint)位置决定。...图2 像UIView有superView与subView概念一样,CALayer也有superLayer与layer概念,前面说到白纸和图中矩形可以理解为layer,书桌和图中矩形以外坐标系可以理解成...如果各自以左上角为原点,则在图中有相对两个坐标空间。 position 在图1中,anchorPoint有(0.5,0.5)和(0,0)两种情况,分别为矩形中心与原点。...图2中是矩形沿不同anchorPoint旋转形态,这就是类似于刚才讲图钉订在白纸正中间与左上角时分别造就了两种旋转形态。...其实,position是,bounds是矩形,根据锚(anchorPoint)来确定只是它们位置,而不是内部属性。

1.6K10

Figma也可以用时间轴做超级流畅动画了

进阶操作 4.1 旋转 首先,我们应该了解什么是旋转或锚。假设我们内部有一个Frame和一个矩形矩形:宽度= 100,高度= 100,x = 100,y = 100,旋转= 0°。...属性面板中X=100 其原因是旋转,该旋转由X和Y轴设置为中心。因此,位置为:X +(宽度/ 2)= 100 +(100/2)= 150。如果要设置与Figma相同值,则应选择旋转左上角。...让我们沿着X轴将其向右移动100像素,然后将其旋转-45°。 ? 单击“播放”,看它是否在旋转。 ? 但是,如果将旋转更改为左上角如怎样呢?更改旋转关键帧无关紧要。...对于该层所有关键帧都是通用。 ? 我们将根据图层左上角进行移动和旋转。 ? 将旋转改为左上角移动效果 通过下面的动图,大家可能看更清楚一些。 ? 中心旋转 ? 左上旋转 ?...选择我们第一个矩形,转到“Motion”,选择我们关键帧,然后单击Ctrl / Cmd + C或任意关键帧下拉菜单中选择“复制”。 ?

17.4K34

关于碰撞检测

1.矩形m与矩形n 矩形1参数是:左上角坐标是(x1,y1),宽度是w1,高度是h1; 矩形2参数是:左上角坐标是(x2,y2),宽度是w2,高度是h2。...假设: 圆形1左上角坐标是(x1,y1),半径是r1, 圆形2左上角坐标是(x2,y2),半径是r2。...下面是数学表达式: (x1 – x2)2 + (y1 – y2)2 <(r1 + r2) 3.矩形与圆碰撞 通过找到矩形上与圆形最近,判断其与圆心距离,如果小于半径就碰撞 定义: 矩形上离圆心最近为变量...因此,通过上述方法即可找出矩形上离圆心最近点了,然后通过『两之间距离公式』得出『最近』与『圆心』距离,最后将其与圆半径相比,即可判断是否发生碰撞。...将矩形旋转看成是画布旋转,求出旋转前圆心坐标,就可以用圆形与矩形碰撞检测了 附: 关于两个矩阵碰撞感悟: 当只有一个矩形时候,它左边界一定小于它右边界,它下边界一定小于它上边界

1K10

详解CALayeranchorPoint和position

和position共同决定图层相对父图层位置,即framex,y 在图层旋转固定点 锚使用单位坐标来描述,范围为左上角{0, 0}到右下角{1, 1},默认坐标是{0.5, 0.5}....继续扩展,很明显,白纸旋转形态随图钉位置不同而不同,图钉订在白纸正中间与左上角时分别造就了两种旋转形态,这是由图钉(anchorPoint)位置决定。...图1 图2 像UIView有superView与subView概念一样,CALayer也有superLayer与layer概念,前面说到白纸和图中矩形可以理解为layer,书桌和图中矩形以外坐标系可以理解成...如果各自以左上角为原点,则在图中有相对两个坐标空间。 position 在图1中,anchorPoint有(0.5,0.5)和(0,0)两种情况,分别为矩形中心与原点。...图2中是矩形沿不同anchorPoint旋转形态,这就是类似于刚才讲图钉订在白纸正中间与左上角时分别造就了两种旋转形态。

85230

我做了一个在线白板!!!

和我们预想不一样,首先我们鼠标是在左上角移动,但是矩形却出生在中间位置,另外矩形大小变化过程也显示出来了,而我们只需要看到最后一刻大小即可。...它想太多,原因其实很简单: 虚线是矩形没有旋转位置,我们点击在了旋转边框上,但是我们点击检测是以矩形没有旋转时进行,因为矩形虽然旋转了,但是本质上它x、y坐标并没有变,知道了原因解决就很简单了...坐标计算绿色角度反正切值,然后加上已知旋转角度得到红色角度,无论怎么旋转,这个距离中心距离都是不变,所以我们可以计算出p1到中心O距离,也就是P2到点O距离,斜边长度知道了,...3.新中心点知道了,那么我们就可以把鼠标当前坐标以新中心反向旋转元素角度,即可得到新矩形旋转右下角坐标rp: 4.中心坐标有了,右下角坐标也有了,那么计算新矩形x、y、wdith、...这个怎么做呢,很简单,因为网格也相当于是左上角开始绘制,所以我们获取到鼠标的clientX、clientY后,对网格大小进行取余,然后再减去这个余数,即可得到最近可以吸附到网格坐标: 如上图所示

3.5K30

Graphics2D 绘制图形-圆角矩形矩形,椭圆、圆弧等

其中:参数c1,c2决定这个渐变色是颜色c1渐变到颜色c2。参数x1,y1,x2,y2决定了渐变强弱,即要求(x1,y1)出发到达(x2,y2),颜色c1变成c2。...rotate(double arc,double x, double y):图形以(x,y)为轴旋转arc弧度。...例如以下代码用Graphics2D新方法绘制线段和圆角矩形:     Graphics2D g2d = (Graphics2D)g;//将对象g类型Graphics转换成Graphics2D    ...,终点是(200,300) 矩形     Rectangle2D rect = new Rectangle2D.Double(20,30,80,40);//声明并创建矩形对象,矩形左上角是(20,30...Arc2D arc1 = new Arc2D.Double(8,30,85,60,5,90,Arc2D.OPEN);     //外接矩形左上角(10,30),宽85,高60,起始角是5度,终止角是

2.2K20

WPF 使用 TranslatePoint 换算元素之间相对坐标

而每个矩形都可以将自己左上角作为原点建立坐标,不同矩形之间坐标原点不相同,当这些用矩形表达元素进行系列旋转和平移等之后,如何将以某个元素矩形左上角为原点坐标换算为另一个元素矩形左上角为原点坐标...其实这个问题可以转换为求在矩形坐标中,(0,0)在 Canvas 上值是多少 因为求一个元素相对于另一个元素坐标,也就是求元素左上角所在另一个元素坐标,而一个元素左上角就是通过以元素左上角为原点坐标也就是...方法里面,第一个参数传入是相对于当前元素左上角为原点坐标,而第二个值就是将要转换坐标的元素。...计算方法就是将传入换算为传入转换坐标的元素左上角原点坐标 计算原理是什么?...其实小伙伴可以尝试画两个矩形,在其中一个矩形里面点一个,然后求这个点在使用另一个矩形左上角作为原点时坐标,这是一道特别简单初中数学 ? 本文代码放在github欢迎小伙伴访问 ----

87910

WPF 如何计算矩形内一个坐标相对另一个矩形坐标

也就是说我拿到一个,这个左上角(0,0)坐标就是矩形1左上角坐标,而我想要将这个转换为以矩形2左上角坐标作为原点坐标系坐标 其实做法就是将矩形2左上角坐标换算为以矩形1作为原点坐标,...然后将这个坐标减去矩形2左上角就可以计算出当前所在矩形2坐标 定义方法 private void TranslatePoint(Rect originRect, Rect rect, Point...point) 将 point originRect 坐标转换为在矩形 rect 坐标 如果此时 originRect 坐标系和 rect 坐标系相同,那么有两个方法,第一个方法就是将...然后进行矩形坐标换算,也就是 rect 使用 originRect 左上角作为原点坐标系,此时坐标系和 point 坐标系相同,也就是计算在相同坐标系一个相对于矩形 方法通过将减去矩形左上角...point 就是相对于 rect 尝试方法2将 point 转换为和 rect 相同原点,方法是通过将加上矩形左上角 private void TranslatePoint(

62030

android matrix 最全方法详解与进阶(完整篇)

这里我们通过一个旋转变换来看看原理,其实一张图片围绕一个旋转,也就是所有的都围绕一个旋转,所以只需要关注一个情况即可: 假定有一个 ,相对坐标原点顺时针旋转情形,同时假定P离坐标原点距离为...同时,可以看到,上面的矩阵四块区域切分也是因为矩阵乘法操作决定,由于这里乘法运算中,左上角四个值,可以和x,y值做乘法运算,所以可以影响到旋转等操作,而右上角模块,只能做加法,所以只能影响到平移...这里除了透视可以改变z轴以外,其他变换基本都是上述原子变换,所以,只要最后一行是0,0,1则是仿射矩阵。...旋转或者缩放 两个,可以达到旋转效果或者缩放效果,缩放比较简单,这里我们来看旋转效果,一个指定中心,一指出旋转效果 代码如下 int bw = bitmap.getWidth(); int bh...(),这个方法前面有讲过,这里把src中指定矩形左上角和右下角两个坐标,写入dst中。

50710

仿bilibili刷新按钮实现

2、绘制 这里,我们要绘制部分有3个,分别是上面提到圆角矩形、文字、旋转图标。那么这里就为这3部分分别声明了一些属性。...可以看到效果还不错,但还是有一问题,下面就分别说说这3部分是怎么画,及存在小问题。...在安卓中,文字绘制跟其它绘制是不同,例如,圆角矩形旋转图标的绘制起点是左上角,而文字则是按文字左下字为起点,也就是按基线(Baseline)来绘制,故需要得到基线起点坐标。 ?...但是,有一需要注意,iconSize是我自己定一个大小,并不是图标的实际大小,所以在往后做旋转动画时获取到旋转中心会有误差,将导致图标旋转时不是按中心进行旋转。...这里有一需要留意: ta.getDimension(属性id, 默认值) 通过TypedArray对象可以外界到值会根据单位(如:dp、sp)不同自动转换成px,但默认值单位是一定,为px

1.4K80

解锁前端难题:亲手实现一个图片标注工具

实现这个功能并不容易,其涉及前端知识众多,本文带领大家零到一,亲手实现一个,支持缩放,移动,编辑图片标注功能,文字描述是抽象,眼见为实,实现效果如下所示: 技术方案 这里涉及两个关键功能,一个是绘制...实现,我们通过旋转上下文来实现,其旋转中心是矩形图形中心,因为操作上线文,所以在每个矩形绘制开始和结束后,要通过save和restore来恢复之前上下文。...要实现完美的拖拽效果,需要一小技巧,在点击时,计算点击和图形左上角坐标差,将其记录到全局变量shiftX和shiftY,关键代码如下所示。...另一个思路是逆向,将要判断,以矩形中点为中心,做逆向旋转,计算出其在 canvas 中坐标,这个坐标,可以继续参与我们之前点在矩形计算。...,转换为旋转角度,涉及一些数学知识,其原理是通过上一次鼠标位置和本次鼠标位置,计算两个旋转中心(矩形中心)三个,形成夹角,示例代码如下: function getRelativeRotationAngle

21710

Unity零基础到进阶 ☀️| UGUI布局 之Content Size Fitter组件介绍 和 使用示例

译文: Content Size Fitter 用作布局控制器,控制其自己布局元素大小。大小由游戏对象上布局元素组件提供最小或首选大小决定。...值得记住是,当调整 Rect Transform 大小时 - 无论是通过 Content Size Fitter 还是其他东西 - 调整大小都围绕着枢轴进行。...这意味着可以使用枢轴控制调整大小方向。 例如,当枢轴位于中心时,内容大小调整器将在所有方向上均等地扩展矩形变换。...当枢轴位于左上角时,Content Size Fitter 将向下和向右扩展 Rect Transform。...Min size: 使用基于布局元素最小高度高度。 Preferred size: 使用基于布局元件优选高度高度。

2.5K80

WPF 如何计算矩形内一个坐标相对另一个矩形坐标

也就是说我拿到一个,这个左上角(0,0)坐标就是矩形1左上角坐标,而我想要将这个转换为以矩形2左上角坐标作为原点坐标系坐标 其实做法就是将矩形2左上角坐标换算为以矩形1作为原点坐标,...然后将这个坐标减去矩形2左上角就可以计算出当前所在矩形2坐标 定义方法 private void TranslatePoint(Rect originRect, Rect rect, Point...point) 将 point originRect 坐标转换为在矩形 rect 坐标 如果此时 originRect 坐标系和 rect 坐标系相同,那么有两个方法,第一个方法就是将...然后进行矩形坐标换算,也就是 rect 使用 originRect 左上角作为原点坐标系,此时坐标系和 point 坐标系相同,也就是计算在相同坐标系一个相对于矩形 方法通过将减去矩形左上角...point 就是相对于 rect 尝试方法2将 point 转换为和 rect 相同原点,方法是通过将加上矩形左上角 private void TranslatePoint(

1.1K20

OpenCV旋转矩形RotatedRectPoints函数遇到问题

本文长度为2722字,预计阅读8分钟 前言 原来文章《C++ OpenCV透视变换改进---直线拟合应用》,通过RotatedRect旋转矩形获取到透视变换4个,再进行透视变换。...Opencv采用通用图像坐标系,左上角为原点O(0,0),X轴向右递增,Y轴向下递增,单位为像素。 矩形4个顶点位置的确定,是理解其它各变量基础,其中p[0]是关键。...顶点p[0]位置可以这样理解: 如果没有对边与Y轴平行,则Y坐标最大为p[0],如矩形(2)(3)(4); 如果有对边与Y轴平行,则有两个Y坐标最大。此时,左侧为p[0]。...通俗说就是RotatedRect坐标点,Y轴最大为P[0],p[0]围着center顺时针旋转, 旋转角度为负的话即是P[0]在左下角,为正P[0]是右下角 所以根据这个情况,我们要计算透视变换时就要对这个进行重新排序...跟踪输出后结果 从上图中可以看到按原来原理,P0应该是左下角,结果输出P0左上角,后来我又换了几张图测试后发现,RotatedRect坐标点,原来说是Y轴最大为P[0],现在实际输出后变为

2.4K20

Android开发仿bilibili刷新按钮实现代码

该按钮由3部分组成,分别是圆角矩形、文字、旋转图标。在点击按钮后,开始加载数据,旋转图标发生旋转,数据加载完成后,旋转图标复位并停止旋转。话不多说,开始敲代码。...2、绘制 这里,我们要绘制部分有3个,分别是上面提到圆角矩形、文字、旋转图标。那么这里就为这3部分分别声明了一些属性。...可以看到效果还不错,但还是有一问题,下面就分别说说这3部分是怎么画,及存在小问题。...在安卓中,文字绘制跟其它绘制是不同,例如,圆角矩形旋转图标的绘制起点是左上角,而文字则是按文字左下字为起点,也就是按基线(Baseline)来绘制,故需要得到基线起点坐标。 ?...但是,有一需要注意,iconSize是我自己定一个大小,并不是图标的实际大小,所以在往后做旋转动画时获取到旋转中心会有误差,将导致图标旋转时不是按中心进行旋转

91220
领券