java graphics类详解_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);//减去多余的部分

}

}

1799f57414fda3104537d2fcc3698806.png

0afae4b3164a1ec73cd2576ddc650efc.png

五角星的坐标图                                      运行结果图

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基础-DButils工具类(QueryRunner)详解

Java基础-DButils工具类(QueryRunner)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC ...

Java面试题总结之Java基础&lpar;二&rpar;

Java面试题总结之Java基础(二) 1.写clone()方法时,通常都有一行代码,是什么? 答:super.clone(),他负责产生正确大小的空间,并逐位复制. 2.GC 是什么? 为什么要有G ...

Java基础之File类的使用

Java基础之File类的使用 1.File类的构造方法和常用方法 2.对File中listFile(FileNameFilter name)学习 3.与File文件类相关的实现 File类的构造方法 ...

java基础&lpar;二&rpar; -对象和类

Java 对象和类 Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为.例如,一条狗是一 ...

java基础&lpar;二&rpar;-----java的三大特性之继承

在中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

Java基础:Object类中的equals与hashCode方法

前言 这个系列的文章主要用来记录我在学习和复习Java基础知识的过程中遇到的一些有趣好玩的知识点,希望大家也喜欢. 一切皆对象   对于软件工程来说面向对象编程有一套完整的解决方案:OOA.OOD.O ...

Java基础&lpar;二&rpar; 基本类型数据类型、包装类及自动拆装箱

我们知道基本数据类型包括byte, short, int, long, float, double, char, boolean,对应的包装类分别是Byte, Short, Integer, Long ...

&lbrack; 转载 &rsqb; Java基础二

前言 关于赢在面试的Java题系列基本收集整理完成了,所有题目都是经过精心挑选的,很基础又考验求职者的基本功,应该说被面试到的几率很大.这里整理挑选出来供大家面试前拿来看一看,所有题目整理自网络,有一 ...

Java基础二:常量池

目录: 自动装箱与拆箱 常量池 ==与equals()区别 1. 自动装箱与拆箱 Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成 ...

随机推荐

Android之控件使用

Android系统为我们提供了大量的控件,例如:开关控件.单选按钮.多选按钮.单选菜单等等,那么这些控件如何使用呢?本篇我将带领大家一道学习一下如何使用这些控件.所谓无图无真相,先让大家看一下效果图: ...

javascript设计模式实践之职责链--具有百叶窗切换图片效果的JQuery插件(三)

在上一篇里,通过采用模板方法模式完成了切换效果对象的构建编写. 接下来就是完成各效果对象的调 ...

OpenStack 企业私有云的若干需求(10):OpenStack 的前景和钱景

本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...

【转】JVM 基础知识

几年前写过一篇关于JVM调优的文章,前段时间拿出来看了看,又添加了一些东西.突然发现,基础真的很重要.学习的过程是一个由表及里,再由里及表的过程,所谓的“温故而知新”.而真正能走完这个轮回的人,也就能 ...

【Spring Cloud笔记】 断路器-hystrix

在微服务架构中,一个微服务的超时失败可能导致瀑布式连锁反映,Spring Cloud Netflix 的断路器Hystrix通过自主反馈,防止了这种情况发生.下面介绍简单的断路器使用方法. [step ...

test markdown to html

软件版本 PHP 5.5.25 Yaf 2.3.2 域名 正式域名 gm.mgame.qihoo.net demo域名 demo.gm.mgame.qihoo.net 配置 配置目录 后台配置 con ...

第11章 拾遗5:IPv6和IPv4共存技术(3)&lowbar;NAT-PT技术【全书完】

6.4 NAT-PT (1)NAT-PT和NAT的差别 ①NAT-PT(附带协议转换的网络地址转换)技术秉承NAT技术的思想,但在原理方面大有不同. ②NAT-PT和NAT本质的区别在于应用场合的不同 ...

PAT《数据结构学习与实验指导》实验项目集 2-09 2-10 2-11 2-12 2-13

pat 2-09 装箱问题模拟 #include #include #include using namespace st ...

MySQL中UNSIGNED和ZEROFILL的介绍

UNSIGNED: 将数字类型无符号化,这与C和C++这些程序语言的unsigned含义相同. INT的类型范围-2 147 483 648~2 147 483 647 INT UNSIGNED范围0 ...

yii2 表单输入框设置

= $form->field($userRole, 'userid', ['options' =>['class' => 'bigDiv'] ])->textInpu ...

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值