java 基础二 Graphics类
一、处理图形
1.画直线
void drawLine (int startx , int starty , int endx , int endy)
参数列表:直线开始的横坐标、纵坐标,直线结束的横坐标、纵坐标。
2.画矩形
1) 矩形边框:void drawRect(int top , int left , int width , int height )
2) 实心矩形 :void fillRect(int top , int left , int width , int height)
参数列表:矩形的左上角坐标(x,y),宽度和高度。
3.圆角矩形
1) 圆角矩形边框 : void drawRoundRect(int top , int left , int width , int height , int xDiam , int yDiam)
2 )实心圆角矩形void fillRoundRect(int top , int left , int width , int height , int xDiam , int yDiam)
参数列表 :圆角矩形的左上角坐标,宽度,高度,X轴上的弧度,Y轴上的弧度
4.画椭圆和圆形
1)空心圆:void drawOval(int top , int left , int width , int height)
2)实心圆:void fillOval(int top , int left , int width , int height)
参数列表 :左上角坐标,宽,高
5.画圆弧
1)空心圆弧:void drawArc(int top , int left , int width , int height , int startAngle , int sweepAngle);
2)实心圆弧: void fillArc(int top , int left , int width , int height , int startAngle , int sweepAngle);
参数列表 :在左上角坐标为(top , left)宽为width 高为 height的矩形中画圆弧 ,startAngle是与3点钟的角度 ,sweepAngel是与startAngle的角度。
6.画多边形
1)空心多边形:void drawP
2)实心多边形:
import java.awt.Frame;
import java.awt.Panel;
import java.awt.Graphics;
import java.awt.Color;
public class Test04{ public static void main(String[] args){ Frame f = new Frame();
f.setSize(1000,1000);
MyPanel mp = new MyPanel();
f.add(mp);
f.show();
}
}
class MyPanel extends Panel{ public void paint(Graphics g){ g.drawLine(100,50,100,100);
g.drawString("Hello World !",120,100);
g.setColor(Color.green);
g.drawRect(100,100,200,100);
g.fillRect(350,100,200,100);
g.drawRoundRect(600,100,200,100,50,50);
g.fillRoundRect(850,100,200,100,20,100);
g.drawOval(100,250,100,100);
g.fillOval(250,250,80,100);
g.drawArc(350,250,100,100,0,90);
g.fillArc(450,250,100,100,0,90);
g.fillArc(550,250,100,100,10,80); }
}
二、Graphics类的应用
1、绘制五角星
import java.awt.Frame;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Panel;
import java.math.*;
public class Test02
{
public static void main(String[] args)
{
Frame f = new Frame();
f.setSize(1000,1000);
f.setBackground(Color.black);
MyPanel mp = new MyPanel();
f.add(mp);
f.show();
}
}
class MyPanel extends Panel
{
public void paint(Graphics g)
{
double xA= 2 , yA= 2 , c = 2,j36,j18,j54;
double xB ,yB ,xC,yC,xD ,yD,xE ,yE,xf,yf,xg,yg;
j36 = Math.toRadians(36);//转化成角度
j18 = Math.toRadians(18);
j54 = Math.toRadians(54);
xB = xA+c*Math.cos(j36);
yB = yA-c*Math.sin(j36);
xC = xA+2*c*Math.cos(j36);
yC = yA;
xD = xA+c*Math.sin(j18);
//System.out.println("xD ="+xD+" c*Math.sin(18)"+c*Math.sin(18) );
yD = yA+c*Math.cos(j18);
xE = xC - c*Math.sin(j18);
yE = yD;
xf = xD+c/2;
yf = yD-(c/2)*Math.tan(j36);
xg = xE - c/(2*Math.sin(j54))*Math.sin(j18);
yg = yE - c/(2*Math.sin(j54))*Math.cos(j18);
//int xpoints[] = {(int)(xB*100),(int)(xD*100),(int)(xC*100),(int)(xA*100),(int)(xE*100),(int)(xB*100)};
//int ypoints[] = {(int)(yB*100),(int)(yD*100),(int)(yC*100),(int)(yA*100),(int)(yE*100),(int)(yB*100)};
int xpoints[] = {(int)(xB*100),(int)(xD*100),(int)(xE*100),(int)(xB*100)};
int ypoints[] = {(int)(yB*100),(int)(yD*100),(int)(yE*100),(int)(yB*100)};
int num = 4 ;
//System.out.println((int)(xA*100)+" "+(int)(yA*100)+" , "+(int)(xD*100)+" "+(int)(yD*100));
g.setColor(Color.white);
g.fillPolygon(xpoints,ypoints,num);
int xpoints1[] = {(int)(xA*100), (int)(xC*100),(int)(xE*100),(int)(xA*100)};
int ypoints1[] = {(int)(yA*100),(int)(yC*100),(int)(yE*100),(int)(yA*100)};
g.fillPolygon(xpoints1,ypoints1,num);
g.setColor(Color.black);
int xpoints2[] = {(int)(xD*100),(int)(xf*100),(int)(xE*100),(int)(xD*100)};
int ypoints2[] = {(int)(yD*100),(int)(yf*100),(int)(yE*100),(int)(yD*100)};
g.fillPolygon(xpoints2,ypoints2,4);//减去多余的部分
int xpoint3[] = {(int)(xE*100),(int)(xg*100),(int)(xC*100),(int)(xE*100)};
int ypoint3[] = {(int)(yE*100),(int)(yg*100),(int)(yC*100),(int)(yE*100)};
g.fillPolygon(xpoint3,ypoint3,4);//减去多余的部分 }
}


五角星的坐标图 运行结果图
2.随机输出星号
import java.awt.Frame;
import java.awt.Panel;
import java.awt.Graphics;
public class Test03
{
public static void main(String[] args)
{
Frame f = new Frame();
f.setSize(500,500);
MyPanel mp = new MyPanel();
f.add(mp);
f.show(); }
}
class MyPanel extends Panel
{
public void paint(Graphics g)
{
for(int i=0 ;i<50;i++)
{
int x = (int)(Math.random()*500);//生成0-500的随机数
int y = (int)(Math.random()*500);
g.drawString("*",x,y);
}
}
}
java 基础二 Graphics类的更多相关文章
- java基础二、类与继承
员工类 Employee, 经理类:Manager public class Employee { private String name; private double salary; privat ...
- Java基础-DButils工具类(QueryRunner)详解
Java基础-DButils工具类(QueryRunner)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC ...
- Java面试题总结之Java基础(二)
Java面试题总结之Java基础(二) 1.写clone()方法时,通常都有一行代码,是什么? 答:super.clone(),他负责产生正确大小的空间,并逐位复制. 2.GC 是什么? 为什么要有G ...
- Java入土--Java基础(二)
Java基础(二) 接上一讲,我们接着来聊聊Java的一些基础知识,下一讲就会进行流程的控制. 类型转换 首先呢,是类型的转换,接上一个内容的数据类型,类型转换就是数据类型更进一步的应用. 由于Jav ...
- Java基础之File类的使用
Java基础之File类的使用 1.File类的构造方法和常用方法 2.对File中listFile(FileNameFilter name)学习 3.与File文件类相关的实现 File类的构造方法 ...
- java基础(二) -对象和类
Java 对象和类 Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为.例如,一条狗是一 ...
- 【Java基础】常用类
常用类 字符串相关的类 String类:代表字符串,使用一对 "" 引起来表示. public final class String implements java.io.Seri ...
- java基础-01代理类
简单的代理类实现案例主实现类:ProxyTestimport java.lang.reflect.InvocationHandler;import java.lang.reflect.Proxy;im ...
- java基础(二)-----java的三大特性之继承
在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...
随机推荐
- October 20th Week 43rd Thursday, 2016
Now, it's clear. OPPO R9s 这一刻 更清晰. I want a new mobile phone, because the one I am using is broken. ...
- Windows无法安装到GPT分区的磁盘的解决方法
thinkpad 预装win8的机子,硬盘采用gpt分区,在重新安装其它系统的时候是无法安装的,会提示“windows无法安装到这个磁盘,选中的磁盘采用GPT分区 形式".所以先采用下面的方 ...
- STM32F407Discovery开发板使用环境搭建
差不多4年前买了STM32F407Discovery这块开发板,也用它作为我的毕业设计的一部分,今晚整理一下东西,觉得这么不错的东西应该再次利用起来,做个智能家居系统的一部分什么的也不错,于是,记录一 ...
- nginx,apache,tomcat配置https的阿里提供的文档
安装证书 ( 1 ) 打开 Nginx 安装目录下 conf 目录中的 nginx.conf 文件,找到 # HTTPS server # #server { # listen 443; # serv ...
- [转载]使用PyQt来编写第一个Python GUI程序
转载自:http://python.jobbole.com/81276/ 英文版出处:http://pythonforengineers.com/your-first-gui-app-with-pyt ...
- Knockout.js随手记(3)
下拉菜单 <select>也是网页设计重要的一环,knockout.js(以下简称KO)也有不错的支持.针对<select>,在data-bind除了用value可对应下拉菜单 ...
- IT干货
最近翻看Redis相关的中文书籍时,发现了很多错误,包括翻译错误及理论错误,因此想搜集一些相关的外文书籍看看.以下几个链接,内容大同小异,均可免费下载相关的英文书籍PDF版,内容涵盖了IT的方方面面. ...
- Js中强大的Promise异步机制
少年别激动 我的这份随笔里面只涉及promise概念 如果想深入了解Promise的用法 可以去阮老师es6入门里面详读 奉上链接 http://es6.ruanyifeng.com/#docs/pr ...
- [BZOJ4027][HEOI2015] 兔子与樱花
Description 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1个树枝连接 ...
- SASS+COMPASS 自适应 学习笔记
来源 http://snugug.github.io/RWD-with-Sass-Compass/#/ 1 安装 COMPASS 扩展 安装 方式 gem 'extension', '~>X.Y ...