当前位置: 首页 > news >正文

java Graphics2D 画图

在Java中,当需要画一些特殊的形状时,比如说椭圆、矩形等,可以使用 Graphics2D 来绘图。

一些API:

g.drawLine(3,3,50,50);//画一条线段
g.drawRect(80,100,40,25);//画线框
g.drawOval(10,10,60,120);//画椭圆

//画多边形
int px1[]={50,90,10,50};//首末点相重,才能画多边形 
int py1[]={10,50,50,10};
g.setColor(Color.blue);
g.fillPolygon(px1,py1,4);

关于画图的更多内容,可以参考网上的一些介绍,或者官方API。

Graphics2D 对象中有个函数是 translate(x,y),该函数的功能如下:

将椭圆的原点移动到 (x,y)。

 

该函数和 rotate函数结合使用,可以实现将一个图形绕一个点旋转。

g2.rotate(Math.PI * rotate / 180.0);   //注意该函数是绕着椭圆的原点旋转

比如说,将一个水平的椭圆绕着椭圆的中心点旋转一个角度,需要先将椭圆的原点移动到一个位置,然后再绕着新的原点旋转,示意图如下:

 

新原点的坐标可以根据水平状态下原点的坐标以及旋转的角度算出来。需要注意的是:先移动原点,然后再旋转,顺序不能乱。

示例代码:

Graphics2D g2 = (Graphics2D)g.create();
g2.setColor(Color.red);
g2.translate(translateX, translateY);
g2.rotate(Math.PI * rotate / 180.0);
g2.drawOval(0, 0, ovalWidth - 1, ovalHeight - 1);
g2.translate(-translateX, -translateY);
g2.dispose();

 

转载于:https://www.cnblogs.com/acBool/p/5125734.html

相关文章:

  • Linux学习之给指定用户发邮件
  • PHP的学习--生成器Generators
  • 20160115学习日志
  • C#基础回顾(三)—索引器、委托、反射
  • UltraEdit 脚本 实现查找替换
  • Jan 17 - Permutations II; BackTracking; Array;
  • LLDB 打印 frame
  • JS魔法堂:再识Bitwise Operation Bitwise Shift
  • 菜鸟nginx源代码剖析数据结构篇(一)动态数组ngx_array_t
  • 改善Chrome在Windows下的中文字体效果
  • java的classpath和path理解
  • js获取单选button的值
  • [iOS]把16进制(#871f78)颜色转换UIColor
  • 普通选项卡+自动播放功能+向前/向后按钮 原生js
  • Eclipse不能自动编译 java文件的解决方案
  • 230. Kth Smallest Element in a BST
  • IOS评论框不贴底(ios12新bug)
  • JAVA之继承和多态
  • laravel 用artisan创建自己的模板
  • nodejs调试方法
  • SQLServer插入数据
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 初识 webpack
  • 开源SQL-on-Hadoop系统一览
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 模型微调
  • 如何在GitHub上创建个人博客
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • Spring Batch JSON 支持
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (06)金属布线——为半导体注入生命的连接
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • /etc/fstab 只读无法修改的解决办法
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
  • [《百万宝贝》观后]To be or not to be?
  • [AIGC] MySQL存储引擎详解
  • [Android] 修改设备访问权限
  • [Apio2012]dispatching 左偏树
  • [BZOJ4016][FJOI2014]最短路径树问题
  • [C++]命名空间等——喵喵要吃C嘎嘎
  • [HJ73 计算日期到天数转换]
  • [LeetCode][面试算法]逻辑闭环的二分查找代码思路
  • [Mvc]在ASP.NET MVC中使用Repeater
  • [Pytorch]:PyTorch中张量乘法大全
  • [selenium] Handling Untrusted SSL certificate error in firefox