Graphics的平移与旋转

自定义QGraphicsItem实现平移、改变尺寸和旋转 文章目录1. 平移2. 改变尺寸3. 旋转 我们在使用QGraphicsView框架的时候,经常需要自定义QGraphicsItem,并且需要实现Item的平移、改变大小和旋转的效果。接下来介绍他们的一种实现方式 1. 平移 平移效果如下图所示: 实现方式有两种方法: 使用QGraphicsItem本身的移动标志实现。 this->setFlag(QGraphicsItem::Ite... 阅读详情

平移函数translate(double x,double y);
旋转函数rotate(double arc,double x,double y)//第一个参数是旋转角度,后二个参数是旋转中心点的横纵坐标参数

package DrawTest;

import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Arc2D;
import java.awt.geom.Line2D;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;



@SuppressWarnings("serial")
public class LineTest2 extends JPanel{

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        JFrame frame = new JFrame();
        frame.setLayout(new GridLayout(1,2,0,0));
        frame.setBounds(230, 30, 900, 950);
        LineTest2 panel = new LineTest2();
        panel.setPreferredSize(new Dimension(900,900));
        frame.add(panel);
        frame.setResizable(false);//设置frame不可调
        frame.setVisible(true);
    }

    public void paintComponent(Graphics g){
        super.paintComponent(g);
        Graphics2D g2 =(Graphics2D)g;
        drawLine(g2,50, 150, 100, 150);
        drawLine(g2,150, 150, 200, 150);
        drawArc(g2,100, 175, 50, 50, 0, -180);//画圆弧函数:前两个数字表示圆外切矩形的左上角坐标,中间两个数字表示外切矩形的宽和高度,后两个数字表示弧起始角和跨越角度

    }
    public void drawLine(Graphics2D g,double x1,double y1,double x2,double y2){
        BasicStroke bs_1=new BasicStroke(2,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
        g.setStroke(bs_1);
        g.setColor(Color.RED);
        AffineTransform transform = new AffineTransform();
        AffineTransform transform_1 = new AffineTransform();
        AffineTransform transform_2 = new AffineTransform();
        AffineTransform transform_3 = new AffineTransform();

        Line2D line = new Line2D.Double(x1, y1, x2, y2);
        g.draw(line);
        transrota(g,transform,line);

        transform_1.translate(0, 250);
        g.setTransform(transform_1);
        g.draw(line);
        transrota(g,transform_1,line);

        transform_2.translate(0, 500);
        g.setTransform(transform_2);
        g.draw(line);
        transrota(g,transform_2,line);

        transform_3.translate(0, 0);
        g.setTransform(transform_3);
    }

    public void drawArc(Graphics2D g,double x1,double y1,double w,double h,double x2,double y2){
        AffineTransform transform = new AffineTransform();
        AffineTransform transform_1 = new AffineTransform();
        AffineTransform transform_2 = new AffineTransform();
        AffineTransform transform_3 = new AffineTransform();

        Arc2D arc = new Arc2D.Double(x1, y1, w, h, x2, y2, Arc2D.OPEN);
        g.draw(arc);//画圆弧函数:前两个数字表示圆外切矩形的左上角坐标,中间两个数字表示外切矩形的宽和高度,后两个数字表示弧起始角和跨越角度,最后表示圆弧的闭合方式
        transrota(g,transform,arc);

        transform_1.translate(0, 250);
        g.setTransform(transform_1);
        g.draw(arc);
        transrota(g,transform_1,arc);

        transform_2.translate(0, 500);
        g.setTransform(transform_2);
        g.draw(arc);
        transrota(g,transform_2,arc);

        transform_3.translate(0, 0);
        g.setTransform(transform_3);
    }

    public void transrota(Graphics2D g2,AffineTransform transform,Shape line){
        for(int i=0;i<1;i++){
            transform.translate(300, 0);
            g2.setTransform(transform);
            g2.draw(line);
        }
        transform.rotate(Math.PI, 200, 187.5); // 围绕(200, 187.5)点旋转图形180度
        g2.setTransform(transform);
        g2.draw(line);
        for(int i=0;i<1;i++){
            transform.translate(300, 0);
            g2.setTransform(transform);
            g2.draw(line);
        }
    }
}
C#Windows窗体界面设计_03_坐标系平移 旋转 镜像 binzhouweichao@163.com 2013-10-16 正如前篇所说,Windows窗体默认的坐标系为:左上角为原点,右向为x正向,下方为y正向。 将坐标系转换成常见的平面直角坐标系,即:原点为左下角(或左下方),右侧为x正向,上方为y正向。 用到的坐标系转换方式有:镜像旋转,平移。 首先说一下Drawing库中的坐标系转换方法 参考:http://msdn.mic 阅读详情

相关推荐

WGS-84 ECEF ENU 坐标系学习记录

地球坐标系固定在地球上而随地球一起在空间做公转和自转运动,因此地球上任一固定点在地球坐标系的坐标就不会由于地球旋转而变化。地心地固直角坐标系和大地坐标系都属于这种坐标系。 一、 几种坐标系 地心地固直角坐标系(ECEF)坐标系 其原点为地球的质心,x轴延伸通过本初子午线(0度经度)和赤道(0deglatitude)的交点。 z轴延伸通过的北极(即,与地球旋转轴重合)。 y轴完成右手坐标系,穿...

YYshuangshuang的博客 1万+

java graphics旋转_Java图像之自定义角度旋转(实例)

图像的旋转需要调用 graphics2d 类的rotate()方法,该方法将根据指定的弧度旋转图像。语法如下:rotate(double theta)其中, theta 是指旋转的弧度。说明:该方法只接受旋转的弧度作为参数,可以使用 math 类的 toradians()方法将角度转换为弧度。 toradians()方法接受角度值作为参数,返回值是转换完毕的弧度值。实例代码:/** *//*** ...

weixin_29664819的博客 1983

RuoYi项目适配达梦数据库(二)

RuoYi项目,代码生成模块的达梦数据库适配。

邢慧鹏的博客 1万+

java graphics rotate_Java GraphicsContext.rotate方法代碼示例

本文整理匯總了Java中javafx.scene.canvas.GraphicsContext.rotate方法的典型用法代碼示例。如果您正苦於以下問題:Java GraphicsContext.rotate方法的具體用法?Java GraphicsContext.rotate怎麽用?Java GraphicsContext.rotate使用的例子?那麽恭喜您, 這裏精選的方法代碼示例或許可以為您...

weixin_36239866的博客 283

MIKE21桥墩模拟实战:抠网格与构筑物法对比与选型指南

本文详细对比了MIKE21软件中抠网格法与构筑物法在桥墩模拟中的应用,包括操作步骤、适用场景及优缺点分析。通过实际案例数据展示两种方法的精度与效率差异,并提供选型决策树和常见问题解决方案,帮助工程师根据项目需求选择最优模拟方法。

weixin_42656416的博客 322

NRF24L01模块的5个常见问题及解决方案:从信号干扰到功耗优化

本文深入探讨NRF24L01无线模块在STM32开发中的5大常见问题及解决方案,包括通信距离优化、数据丢失排查、电源噪声抑制、SPI通信故障处理以及低功耗设计。通过代码示例和电路图分析,提供实用的优化策略,帮助开发者提升无线通信的稳定性和效率。

weixin_28256233的博客 226

java如何利用rotate旋转图片_Java旋转图像

@Overridepublic void paintComponent(Graphics g){super.paintComponent(g);Graphics2D g2=(Graphics2D) g.create();//rotation of playerif(player.newDirection){int rotationX=player.getImage().getWidth(null)...

weixin_39664560的博客 284

【RT-DETR创新改进】改进前必看!对Ultralytics调参, 1:1还原RT-DETR官方版本实验参数,使用原汁原味的RT-DETR模型,才能高效跑实验、高效涨点、收割小论文、完成大论文!!!

本文针对Ultralytics训练RT-DETR精度不佳问题,提供参数配置优化方案。通过对比官方RT-DETR参数设置,详细指导如何修改Ultralytics版本的关键参数,包括优化器、学习率、权重衰减等6处配置调整。操作步骤涵盖default.yaml文件修改和trainer.py代码调整,确保模型收敛性能达到官方水平,帮助研究者快速提升实验效果。文末附官方源码链接和具体参数配置网址供参考。

Ai缝合怪、助力小伙伴高效发论文 1773

java rotate_Graphic2D中的rotate方法应用问题

我想请教各位Graphics2D中的g2d.rotate(Math.PI/2,200,200);是不是指将图片以(200,200)为旋转中心,逆时针旋转90度?另外我写了个很小的测试程序,但是点击旋转按钮,图片怎么都不...我想请教各位Graphics2D中的g2d.rotate(Math.PI/2, 200, 200);是不是指将图片以(200, 200)为旋转中心,逆时针旋转90度?另外我写了...

weixin_36186183的博客 2244

使用MATLAB求解二维顶盖驱动流问题的详细代码和说明

本文介绍了使用MATLAB求解二维顶盖驱动流问题的涡量-流函数方法。代码采用129×129网格,雷诺数Re=1000,通过迭代求解Navier-Stokes方程,包含流函数方程和涡量输运方程的离散求解。程序实现了边界条件处理、收敛性检查,并提供丰富后处理功能:流线图、涡量分布图、中心线速度曲线、矢量图和三维涡量可视化。计算结果可与Ghia等(1982)的经典数据进行验证。该代码完整展示了CFD问题的数值求解流程,包括参数设置、主循环计算和多种结果呈现方式,适用于流体力学教学和科研验证。

AI的内部世界的博客 225

uniapp - 实现扫码功能自定义扫描二维码/条码界面+手电筒轻触照亮+扫码屏幕添加手动输入框,手机扫描二维码并跳转过程,调用手机原生摄像头进行扫码且自动识别执行事件(uniApp安卓苹果App端)

uniapp,app端,安卓app,苹果ios,uniapp扫码识别,二维码展示和扫码,uniapp如何实现扫码功能,uni-app实现扫码功能,二维码和一维码/条码扫描,UniApp实现扫描二维码,uniapp开发原生app页面的扫码功能,自定义扫码界面,uniapp怎么调用扫一扫功能,app自定义扫码界面,uniapp 自定义扫一扫页面,扫码手电筒功能,自定义扫描框,扫码报错怎么办,扫码黑屏,扫一扫摄像头黑屏,uniapp扫码原生插件,最新扫码组件,连续扫码,uniapp APP扫码,扫码后如何处理跳转

✅ 精选推荐文章 1万+

[C#] Graphics平移缩放旋转

【平移】 private void btnTranslate_Click(object sender, EventArgs e) { Graphics graphics = this.CreateGraphics(); // 红色笔 Pen pen = new Pen(Color.Red, 5); ...

SmartSi 2483

海思3516DV300智能算法实现

海思3516DV300智能算法实现

xiaoning132的专栏 935

Graphics平移缩放旋转

【平移】 private void btnTranslate_Click(object sender, EventArgs e)         {             Graphics graphics = this.CreateGraphics();             // 红色笔             Pen pen = new Pen(Colo

jiliqiang1986的博客 1194

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Graphics平移缩放旋转(转载)+点睛

点睛:可以进行多次旋转和平移,也就是平移以后再平移,旋转以后再旋转,有时候一次达不到要求,如果你想一次调整完美的话很麻烦,所以最好多次,上代码 private void btnTranslate_Click(object sender, EventArgs e) { Graphics graphics = this.CreateGrap...

dgxjudjbv005695479的博客 249

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VC++ 中GDI+ 变换(平移、旋转、缩放)的简单应用

图形变换是指对绘制的图形进行平移、旋转、伸缩等操作,由 Graphics 类提供对应的成员函数进行实现。在+中,矩阵变换所涉及的矩阵,由专门的矩阵类 Matrix 来表示,是一个 3x3的矩阵。在工作中遇到了要用变换的问题,于是就记录一下,以备后面复习。

weixin_45144862的博客 570

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

vb.net 教程 5-10 Graphics类之2

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 继续谈谈Graphics的几个方法: 平移Graphics:Graphics.TranslateTransform 旋转Graphics:Graphics.RotateTransform 缩放Graphics:Graphics.ScaleTransform 新建一个窗体,添加一个按钮(btnDraw) 代码里面添加注释讲解: Private Sub btnDraw_Click(sende..

chinaherolts2008的博客 395

c#中gdi的平移和旋转

在C#中使用GDI+(Graphics Device Interface)进行坐标系的平移和旋转,可以通过Graphics类的变换方法实现。// 在旋转后的坐标系中平移。// 绕(100,100)旋转30度。// 顺时针旋转45度。// 绕原始原点旋转。先旋转后平移‌:围绕原始原点旋转后再平移。先平移后旋转‌:围绕新原点旋转。

u011555996的博客 671

C# Graphics旋转和TranslateTransform及RotateTransform用法

C# Graphics旋转有两个主要函数TranslateTransform(int x,int y)及RotateTransform(int angle); x,y参数代表旋转变换中心(意味着使用这个函数会将屏幕原点由左上角变为设定的x,y)。如图示意,如果想将自己绘制的椭圆以中心旋转,可以将参数x,y设置为原来椭圆中心,此时坐标原点会移到到之前的(x,y),不要忘记这一点; angle代表

qianlinjun的博客 3万+

GDI+ 中图像矩阵变换

GDI+ 中图像矩阵变换

编程猿来如此 982

IOS 改变图形上下文中的形状:平移、缩放、旋转

原文:http://blog.csdn.net/pop_xiaohao/article/details/7898449 一、平移图形上下文中的形状 1、使用仿射平移变换,为了创建一个新的平移变换,我们需要使用CGAffineTransformMakeTranslation函数,它将返回一个CGAffineTransform类型的仿射变换。这个函数的两个参数指定x和y方向上以点为单位

Eward9888的专栏 4705

Quartz2D——旋转、平移、缩放、剪切圆形图片

注:旋转、平移、缩放,必须放在画图之前 平移: // 获取上下文 CGContextRef context = UIGraphicsGetCurrentContext(); // 画一个三角形 // 定义三个点 CGPoint point[3] = {{50, 50}, {100, 80}, {10, 80}}; CGContextAddL

yejiexiaobai的博客 1095

java DrawString 旋转问题

<br />public void rotateText(Graphics g, String s, double angle, int x, int y) <br />{ <br />Graphics2D g2d = (Graphics2D)g; <br /><br />// Move the origin to the (x,y) <br />g2d.translate(x, y); <br />// Rotate the angle <br />g2d.rotate(Math.PI*(angle/-1

ryb531的专栏 2597
上一篇: Java链接MySQL时遇到的问题
下一篇: Perl初学笔记(一)——标量变量
MysunshineSy
博客等级 码龄10年 2粉丝 9原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值