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);//減去多余的部分
}
}
五角星的坐標圖 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?運行結果圖
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基礎(二)
Java面試題總結之Java基礎(二) 1.寫clone()方法時,通常都有一行代碼,是什么? 答:super.clone(),他負責產生正確大小的空間,并逐位復制. 2.GC 是什么? 為什么要有G ...
Java基礎之File類的使用
Java基礎之File類的使用 1.File類的構造方法和常用方法 2.對File中listFile(FileNameFilter name)學習 3.與File文件類相關的實現 File類的構造方法 ...
java基礎(二) -對象和類
Java 對象和類 Java作為一種面向對象語言.支持以下基本概念: 多態 繼承 封裝 抽象 類 對象 實例 方法 重載 對象:對象是類的一個實例(對象不是找個女朋友),有狀態和行為.例如,一條狗是一 ...
java基礎(二)-----java的三大特性之繼承
在中有這樣一句話:復用代碼是Java眾多引人注目的功能之一.但要想成為極具革命性的語言,僅僅能夠復制代碼并對加以改變是不夠的,它還必須能夠做更多的事情.在這句 ...
Java基礎:Object類中的equals與hashCode方法
前言 這個系列的文章主要用來記錄我在學習和復習Java基礎知識的過程中遇到的一些有趣好玩的知識點,希望大家也喜歡. 一切皆對象 ? 對于軟件工程來說面向對象編程有一套完整的解決方案:OOA.OOD.O ...
Java基礎(二) 基本類型數據類型、包裝類及自動拆裝箱
我們知道基本數據類型包括byte, short, int, long, float, double, char, boolean,對應的包裝類分別是Byte, Short, Integer, Long ...
[ 轉載 ] 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)_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 ...
總結
以上是生活随笔為你收集整理的java graphics类详解_java 基础二 Graphics类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王之泰201771010131《面向对象
- 下一篇: C++:实现量化存在净额结算协议的交易对