利用java实现图片翻转的代码重载渲染控件的paintComponent(Graphics
g)方法.
设你当前图像实例为img,已初始化,需要旋转的角度为ang
public
void
paintComponent(Graphics
g){
super.paintCompoent(g);
Graphics2D
g2d
=
(Graphics2D)g;
g2d.rotate(-angle);
g2d.drawImage(img,0,0,this.getWidth(),this.getHeight(),null);
}
Graphics,Graphics2D
类中有对当前描绘环境进行仿射变换的方法,包括translate,scale,rotate,也可以直接设置仿射变换矩阵,利用这点就可以根据所需要的实现方式来进行描绘.
用JAVA写一段程序翻转字符串例子
String a="abcde";
char[] b=a.toCharArray();
char temp;
for(int i=0;ib.length/2;i++)
{
temp=b[i];
b[i]=b[b.length-i-1];
b[b.length-i-1]=temp;
}
a=new String(b);
System.out.print(a);
跟字符串长度有关系java代码翻转 , 时间复杂度大概是O(n/2)...
java 图像翻转。。求解释 代码?。?/h2>在操作二维或三维的图形图像上,长期以来人们总结出了一些常用的变换矩阵 , 这些矩阵就像公式和定理一样被开发人员使用,楼主可以把这些矩阵当成公式来记忆,就像我们小时候背加法、乘法口诀一样 。
如果楼主想了解得更深入一些,请往下看:
[ x'][m00m01m02] [ x ][ m00x + m01y + m02 ]
[ y'] = [m10m11m12] [ y ] = [ m10x + m11y + m12 ]
[ 1 ][001] [ 1 ][1]
上面的式子是jdk文档中复制过来的,就是变换时的运算过程,也就是说变换后的坐标x'、y'是由一个3*3的矩阵与原坐标x、y相乘得出的,其中的m00~m12就是AffineTransform构造方法中的六个参数 , 另外,式子中的最后一行是固定的 。
矩阵乘法就不用说了吧,最后得出的结果就是上式中的最后一列,可能写成下面这样会更容易理解:
x' = m00x + m01y + m02
y' = m10x + m11y + m12
看出什么了吗?其实这就是二维平面直角坐标系中的两个很简单的二元一次方程而已,方程定义的就是横纵坐标变换的规则 。
以水平翻转为例,水平翻转是以图形/图像的垂直中线为轴来翻转的,因此任何一个点(x,y)变换后的坐标应该是y坐标不变 , x坐标变为-x+width-1,即(-x+width-1,y),之所以减1是因为垂直中轴上的点不应该改变 。
理解了上面的变换过程之后,将结果带入上面的两个二元一次方程 , 可以得出
m00=-1、m01=0、m02=width-1
m10=0、m11=1、m12=0
正好是你给的代码中的六个值(AffineTransform构造方法中的参数顺序为m00、m10、m01、m11、m02、m12)
其他几个变换道理是一样的
java中怎么颠倒数据输出顺序颠倒数据输出顺序
那么就需要知道数据,是什么类型的数据?
字符串?数组?集合?
下面代码
import java.util.ArrayList;
import java.util.Collections;
public class DataREV {
public static void main(String[] args) {
String str1 = "abcdefg";
String str2 = new StringBuilder(str1).reverse().toString();//字符串翻转顺序
System.out.println("原始顺序:" + str1 + "\n颠倒顺序:" + str2);
int[] ary1 = { 8, 2, 6, 8 };
System.out.println("原始顺序:");
for (int i = 0; iary1.length; i++) {
System.out.print(ary1[i] + " ");
}
System.out.println("\n颠倒顺序:");
for (int i = ary1.length - 1; i = 0; i--) {//数组从末尾向第0位方向输出
System.out.print(ary1[i] + " ");
}
System.out.println();
ArrayListString list = new ArrayListString();
list.add("第一");
list.add("第二");
list.add("第三");
for (String s : list) {
System.out.print(s+" ");
}
System.out.println();
推荐阅读
- 九宫格直播间拉票话术技巧,直播九宫格赚钱吗
- 市场与市场营销如何提升,市场与市场营销如何提升竞争力
- 头像怎么变成电视里的头像,把电视换头像
- 直播卖货装饰摆件话术,直播间饰品售卖的话术
- 编辑命令linux 编辑命令中的剪切复制粘贴的快捷键
- 手机配音怎么学好一点,手机如何配音教程视频
- 打游戏电脑桌面颜色,电脑桌面颜色正常 游戏颜色不正常
- 安卓校园助手,校园助手小程序
- php连接数据库做图标 php建立数据库连接