強化JAVA圖形操作類
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
不想再繼續為漢語程式設計的問題浪費時間,印度的SKTN下場怎麼樣大家一目瞭然。而在我Blog發表評論的,只要是用人類語言,我都可以接受。就算有個別不用人類語言的,有空時我也會盡量幫那些生物往人類語言方向矯正。
——————————————————————————————
我們都知道,微軟對其原有GDI(Graphics Device Interface)改進後形成了現在的GDI+。作為圖形裝置介面GDI的繼任者,其對GDI的很多功能都進行了優化,而且還提供了許多方便實用的附加功能。
以此為基礎,在.Net環境下可以很輕鬆的完成一系列複雜的圖形操作。而與之相較,Java的影象介面在影象處理功能上則略顯單薄,而部分操作較之C#等還有些複雜。
所以最近我打算在本人的loonframework專案中將一些java影象介面二次封裝,及新增部分新的功能進入。下面我公佈的,是一些在Loonframework框架中將新新增的影象處理類。當然,這些還在測試階段,最後的確定版估計會與此有較大出入,有改進意見的歡迎郵寄到我的Email:
BaseImage.java:
package org.loon.framework.game.test.image;
import java.awt.Image;
/** */ /**
* <p>
* Title: LoonFramework
* </p>
* Description:基礎Bitmap介面
* </p>
* <p>
* Copyright: Copyright (c) 2007
* </p>
* <p>
* Company: LoonFramework
* </p>
*
* @author chenpeng
* @version 0.1
*/
public interface BaseImage ... {
final static int BITMAPFILEHEADER_SIZE = 14;
final static int BITMAPINFOHEADER_SIZE = 40;
abstract int getWidth();
abstract int getHeight();
abstract LColor getPixel(int x, int y);
/** *//**
* 設定畫素點
*
* @param x
* @param y
* @param rgb
* @return
*/
abstract boolean setPixel(int x, int y, int rgb);
abstract boolean setPixel(int x, int y, int r, int g, int b);
abstract boolean setPixel(int x, int y, LColor color);
/** *//**
* 移動畫素
*
* @param dx
* @param dy
*/
abstract void movePixels(int dx, int dy);
/** *//**
* 清除畫素
*
* @param rgb
*/
abstract void clear(int rgb);
/** *//**
* 獲得LGraphics
*
* @return
*/
abstract LGraphics getLGraphics();
abstract Image getImage();
/** *//**
* 設定指定x,y交集
*
* @param x
* @param y
* @return
*/
abstract boolean setTransparent(int x, int y);
/** *//**
* 設定指定color出現處
*
* @param val
*/
abstract void setTransparent(LColor color);
/** *//**
* 替換指定顏色
*
* @param color1
* @param color2
*/
abstract void setDisplace(LColor color1, LColor color2);
/** *//**
* 儲存自身到指定路徑
*
* @param path
*/
abstract void save(String path);
/** *//**
* 儲存影象到指定路徑
*
* @param image
* @param path
*/
abstract void save(Image image, String path);
/** *//**
* 儲存影象到指定路徑為指定大小
*
* @param image
* @param path
* @param width
* @param height
*/
abstract void save(Image image, String path, int width, int height);
}
LColor.java: package org.loon.framework.game.test.image;
/** */ /**
* <p>Title: LoonFramework</p>
* <p>Description:loonframework用color</p>
* <p>Copyright: Copyright (c) 2007</p>
* <p>Company: LoonFramework</p>
* @author chenpeng
* @email:[email protected]
* @version 0.1
*/
public class LColor ... {
int R=0;
int G=0;
int B=0;
public LColor()...{}
/** *//**
* 注入r,g,b數值
* @param r
* @param g
* @param b
*/
public LColor(int r,int g,int b)...{
this.R=r;
this.G=g;
this.B=b;
}
}
LGraphics:
package org.loon.framework.game.test.image;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Polygon;
import java.awt.font.LineMetrics;
import org.loon.framework.game.test.image.BaseImage;
/** */ /**
* <p>Title: LoonFramework</p>
* <p>Description:loonframework用graphics,開發中……</p>
* <p>Copyright: Copyright (c) 2007</p>
* <p>Company: LoonFramework</p>
* @author chenpeng
* @email:[email protected]
* @version 0.1
*/
public class LGraphics ... {
Graphics _g = null;
Font _font;
public LGraphics() ...{
_font = new Font(null, Font.PLAIN, 12);
}
public LGraphics(Graphics g) ...{
_font = new Font(null, Font.PLAIN, 12);
setGraphics(g);
}
public void setGraphics(Graphics g) ...{
_g = g;
_g.setFont(_font);
}
public void setRGB(int rgb) ...{
_g.setColor(new Color(rgb));
}
public void setRGB(int r, int g, int b) ...{
int rgb = (r << 16) | (g << 8) | b;
_g.setColor(new Color(rgb));
}
public void drawLine(int x1, int y1, int x2, int y2, int rgb) ...{
setRGB(rgb);
_g.drawLine(x1, y1, x2, y2);
}
public void drawRect(int x, int y, int width, int height) ...{
_g.drawRect(x, y, width, height);
}
public void drawRect(int x, int y, int width, int height, int rgb) ...{
setRGB(rgb);
_g.drawRect(x, y, width, height);
}
public void fillRect(int x, int y, int width, int height) ...{
_g.fillRect(x, y, width, height);
}
public void fillRect(int x, int y, int width, int height, int rgb) ...{
setRGB(rgb);
_g.fillRect(x, y, width, height);
}
public void fillTriangle(int x1, int y1, int x2, int y2, int x3, int y3) ...{
if (_g == null) ...{
return;
}
Polygon p = new Polygon();
p.addPoint(x1, y1);
p.addPoint(x2, y2);
p.addPoint(x3, y3);
_g.fillPolygon(p);
}
相關推薦
強化JAVA圖形操作類
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
JAVA 原子操作類
上文中,guava程式碼中就用到了,在這裡再專門捋一下 部分內容源自: https://www.jianshu.com/p/712681f5aecd https://www.yiibai.com/java_concurrency/concurrency_atomiclong.html Atomi
java反射操作類方法與屬性
package com.fanshe.test; public class User { private int age; private String email; private String username; public User() {
java日期操作類
Java.util.Date //java.util.Date與long轉換 Date date=new Date();//得到當前系統時間 System.out.println(date);//Thu Nov 22 19:21:12 CST 2018 long time = date.
Java集合操作類Collections的一些常用方法
public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); list.add(34);
java反射操作類結構(二)
java反射操作類結構 反射操作構造方法 Class只是作為反射的操作源頭,但是嚴格來講,反射還有其他內容。反射給使用者最大的方便有三點: 1.構造呼叫 2.方法呼叫 3.屬性呼叫 在反射機制裡面提供有java.lang.reflect包,包中最重
Java 原子操作類詳解(AtomicInteger、AtomicIntegerArray等)
當程式更新一個變數時,如果多執行緒同時更新這個變數,可能得到期望之外的值,比如變數i=1,A執行緒更新i+1,B執行緒也更新i+1,經過兩個執行緒操作之後可能i不等於3,而是等於2。因為A和B執行緒在更新變數i的時候拿到的i都是1,這就是執行緒不安全的更新操作,通常我們會使
使用java反射操作類的建構函式,成員變數和成員方法
在java.lang.reflect包中有三個類Field,Method,Constructor.分別描述域,方法,構造器。參考API,關於這三個類的說明。 在執行時使用反射分析物件,如果訪問的是私有域或是私有方法,私有建構函式,會丟擲IllegalAccessExce
Java 檔案操作類(操作目錄)
·列出目錄下的資訊:public String[ ] list();·列出所有的資訊以File類物件包裝:public File [ ] listFiles();範例1:列出資訊import java.
java原子操作類-原子陣列類
java還提供了通過原子方式更新數組裡的某個元素,Atomic包提供了以下4個類。 AtomicIntegerArray:原子更新整型數組裡的元素 AtomicLongArray:原子更新長整型數組裡的元素 AtomicReferenceArray:原子更新引用型別數組裡的
非常實用的Java檔案操作類
import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java
java入門(類型轉換、字符串操作等)
過程 boolean ava 字符串 符號 兩個 uppercase rim 算術 java基礎數據類型:不能=null; 四類八種: 整數型: byte 2的8次方 short 2的16次方 int 2的32次方
在java中RandomAccessFile類的作用:對指定文件可以進行讀寫的操作
cnblogs 讀寫 acc com ces 作用 分享 進行 .com 在java中RandomAccessFile類的作用:對指定文件可以進行讀寫的操作
Java中Properties類的操作
文件中 配置文件 所有 技術分享 set nbsp str 宋體 java Java中有個比較重要的類Properties(Java.util.Properties),主要用於讀取Java的配置文件,就是像讀取數據庫賬號密碼一樣,其配置文件常為.properties文件,格
Java中Cookie常用操作類(Spring中操作Cookie)
方法 .net str blog .cn shm efault csdn int 說明:Cookie下用Key取值沒有快速的方法,只能便利循環去取。 import java.util.HashMap; import java.util.Map; import
java圖形驗證碼生成工具類及web頁面校驗驗證碼
組合 line des resp word buffere 需要 case ali 最近做驗證碼,參考網上案例,發現有不少問題,特意進行了修改和完善。驗證碼生成器:[ht
Java文件操作類效率對比
字符 name mem http .get space data args 內容 前言 眾所周知,Java中有多種針對文件的操作類,以面向字節流和字符流可分為兩大類,這裏以寫入為例: 面向字節流的:FileOutputStream 和 BufferedOutputStr
重學java---3---有關時間的操作類
java中有關時間的類如下: 1. java.util.Date //程式碼精確到毫秒的時間例項 2. java.sql.Time //資料庫操作時用 3. java.sql.Timestamp //資料庫操作時用 4. java.sql.Date //資料庫操作的時間 5. ja
java併發之原子操作類(AtomicLong原始碼分析)和非阻塞演算法
背景 近年來,在併發演算法領域的大多數研究都側重於非阻塞演算法,這種演算法用底層的原子機器指令(例如比較併發交換指令)代替鎖來確保資料在併發訪問中的一致性。非阻塞演算法被廣泛的用於在作業系統和JVM中實現執行緒/程序排程機制、垃圾回收機制以及鎖和其他併發資料結構。 與基於鎖
Java中操作檔案的類——File
操作檔案的類——File File類的基本介紹 Public File(String pathname)——>例項化File類時,必須設定好路徑 序號: 方法或常量 型別 描述 1