问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

在Java游戏开发过程中有哪些实用的绘图技术

发布网友 发布时间:2022-07-05 14:45

我来回答

1个回答

热心网友 时间:2024-12-03 23:59

import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class RotateImage {

public static BufferedImage Rotate(Image src, int angel) {
int src_width = src.getWidth(null);
int src_height = src.getHeight(null);
Rectangle rect_des = CalcRotatedSize(new Rectangle(new Dimension(
src_width, src_height)), angel);

BufferedImage res = null;
//res = new BufferedImage(rect_des.width, rect_des.height,BufferedImage.TYPE_INT_RGB);
res = new BufferedImage(rect_des.width, rect_des.height,BufferedImage.TYPE_INT_ARGB);
//res = new BufferedImage(rect_des.width, rect_des.height,BufferedImage.TYPE_INT_BGR);
//res = new BufferedImage(rect_des.width, rect_des.height,BufferedImage.TYPE_INT_ARGB_PRE);
Graphics2D g2 = res.createGraphics();
g2.translate((rect_des.width - src_width) / 2, (rect_des.height - src_height) / 2);
g2.rotate(Math.toRadians(angel), src_width / 2, src_height / 2);

g2.drawImage(src, null, null);
return res;
}

public static Rectangle CalcRotatedSize(Rectangle src, int angel) {
if (angel >= 90) {
if(angel / 90 % 2 == 1){
int temp = src.height;
src.height = src.width;
src.width = temp;
}
angel = angel % 90;
}

double r = Math.sqrt(src.height * src.height + src.width * src.width) / 2;
double len = 2 * Math.sin(Math.toRadians(angel) / 2) * r;
double angel_alpha = (Math.PI - Math.toRadians(angel)) / 2;
double angel_dalta_width = Math.atan((double) src.height / src.width);
double angel_dalta_height = Math.atan((double) src.width / src.height);

int len_dalta_width = (int) (len * Math.cos(Math.PI - angel_alpha
- angel_dalta_width));
int len_dalta_height = (int) (len * Math.cos(Math.PI - angel_alpha
- angel_dalta_height));
int des_width = src.width + len_dalta_width * 2;
int des_height = src.height + len_dalta_height * 2;
return new Rectangle(new Dimension(des_width, des_height));
}

public static void main(String[] args) {
try {
BufferedImage src = ImageIO.read(new File("C:\\Users\\Administrator\\Desktop\\使用Mondrian查询的一个例子.png"));
BufferedImage des = RotateImage.Rotate(src, 30);
System.out.println(des);
System.out.println(ImageIO.write(des, "png", new File("C:\\Users\\Administrator\\Desktop\\使用Mondrian查询的一个例子_旋转30°.png")));
des = RotateImage.Rotate(src, 150);
System.out.println(des);
System.out.println(ImageIO.write(des, "png", new File("C:\\Users\\Administrator\\Desktop\\使用Mondrian查询的一个例子_旋转150°.png")));
des = RotateImage.Rotate(src, 270);
System.out.println(des);
System.out.println(ImageIO.write(des, "png", new File("C:\\Users\\Administrator\\Desktop\\使用Mondrian查询的一个例子_旋转270°.png")));
} catch (IOException e) {
e.printStackTrace();
}
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
上午去烧香,晚上梦见僵尸要吃我 ...电梯顶层的上方看到死人半个身子 我我掉头走后 被吓醒了 郁_百度知... 我两次梦见去逛商场然后电梯(上升的,带扶手的)塌了,丧尸出来,我和一群... 梦见在丧尸要咬我然后被我一脚踢进电梯它里半个身体出来了还想咬,然后... 香港hpv九价预约官网网址 电脑所有的电线有哪些电脑有哪些连接线 电脑电源那么多线起什么作用电脑电源连接线有多少个基本的都有什么作用... 显示器要接几根线 ...连接线是9芯的,谁知道是哪几条有用,哪几条没有用,各是什么颜色... mbr平板膜可以倒着放么 QQ斗地主的问题,就是牌显示太了,怎么调? qq斗地主怎么设置牌的显示顺序 玩QQ斗地主开牌时不是按大小排列,如何调整? 怎么把QQ斗地主设置成大牌 QQ斗地主的发牌模式变了?怎么改? QQ斗地主的发牌模式怎么变了?怎么改回来? 为什么说没有古代奴隶制就没有现代文明? 到底有没有古代? 为什么没有古代了 到底有没有古代??? 为什么没有古代了? 全集装箱船的特点 杂货船,集装箱船…各有什么特点 灵匣网梦见和不认识的女人发生性关系是什么意思 来宾金秀县民族小学长鼓舞用哪首歌 民族小学它在祖国的那个省?那个市?是所什么的小学? 民族小学给你留下哪些印象 金秀瑶族自治县民族小学怎么样? 零分偶像情头,这张的配图,谁有,跪求 金零分的情头 在地球上观测日晷非常困难为什么? 使用日晷时和钟表的时间作对比,经过一段时间的观察,有什么发现?_百度... 我买了个移动硬盘想作为BISS启动盘不怎么怎么做 为什么这几天起点的小说公众章节都下载不全了!如神战现在又107章但只能... 帮我找一些可爱的superman头像。 求一张头像、! 谁能帮忙配一下这个QQ头像的女头啊,谢谢啦 兄弟5个头像相同的照片不同的字 找东西 网名 头像 帮帮忙啊!!! ...男的那个有个卡通的小超人小男孩,写着superman me。求女方的。_百度... 欧美血腥头像网名一对的 求一篇白话文搞笑版三国演义(在线等 30分!!) 免费的激光印章排版雕刻软件 画眼线的时候,可以只化眼尾不化内眼线吗? 烫头发价格差别那么大,真的是药水价格差那么多吗? 便宜的烫发和贵的有什么区别?对此你怎么看? 002061什么时候复牌 "骁"字可用于人名吗? 骁字为凶字,用于名字好吗 放置江湖寒丝羽竹在哪