重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

仿射变换java代码的简单介绍

出现'class'or 'interface'expected

/*你的代码编译不能通过,我用eclipse改正了一下,这回行了~代码如下*/

成都创新互联是一家专业提供玉树企业网站建设,专注与网站建设、网站制作H5建站、小程序制作等业务。10年已为玉树众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。

import java.awt.*;

import java.awt.geom.*;

import javax.swing.*;

public class c9_10 extends JApplet {

/**

*

*/

private static final long serialVersionUID = 1L;

public void paint(Graphics g) {

Rectangle2D.Double rec1 = new Rectangle2D.Double(0, 0, 100, 100);

Rectangle2D.Double rec2 = new Rectangle2D.Double(50, 0, 100, 100); //你的代码这个地方rec2没有类型

Rectangle2D.Double rec3 = new Rectangle2D.Double(125, 75, 100, 100); //你的代码这个地方rec3没有类型

Rectangle2D.Double rec4 = new Rectangle2D.Double(50, 125, 100, 100); //你的代码这个地方rec4没有类型

Rectangle2D.Double rec5 = new Rectangle2D.Double(-25, 75, 100, 100); //你的代码这个地方rec5没有类型

Graphics2D g2 = (Graphics2D) g;

g2.setPaint(Color.red);// 将用户坐标系的原点(0,0)平移到屏幕坐标系x为100,y为50像素点的位置

g2.translate(100, 50);// radians=degree * pie / 180

g2.rotate((45 * java.lang.Math.PI) / 180); // 将图形旋转45

g2.fill(rec1); // 画左上角坐标为(0,0),长与宽为100的填充矩形,创建仿射变换对象,设置几何图形变换为默认方式

g2.setTransform(new AffineTransform());// 创建一个AlphaCcomposite类的复合对象ac,规则为50%的透明度

AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER,

0.5f);

g2.setComposite(ac); // 设定重叠对象的颜色复合方式

g2.setPaint(Color.green);

g2.fill(rec2);

g2.setPaint(Color.blue);

g2.fill(rec3);

g2.setPaint(Color.yellow);

g2.fill(rec4);

g2.setPaint(Color.pink);

g2.fill(rec5);

}

}

//建议使用eclipse编辑,出错机会少~~

利用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的程序

public class RotateImageDemo extends JFrame{

JSlider jSlider = new JSlider(JSlider.HORIZONTAL,0,180,0); //设定旋转角度

ImagePane imagePane=new ImagePane(); //绘制图像的面板

public RotateImageDemo(){

super("图像旋转演示"); //调用父类构造函数

jSlider.setPaintTicks(true); //绘制标志位

jSlider.setMajorTickSpacing(45); //设置标志尺寸

jSlider.setMinorTickSpacing(5);

jSlider.setPaintLabels(true); //绘制出数字

jSlider.setBorder(new javax.swing.border.TitledBorder(BorderFactory.createEmptyBorder(), "图像的旋转度")); //设置边框

jSlider.addChangeListener(new ChangeListener() { //滑动条jSlider事件处理

public void stateChanged(ChangeEvent ce) {

int value=((JSlider) ce.getSource()).getValue(); //获取设置值

double angle =(float)value/180*Math.PI ; //得到旋转角度(弧度制)

imagePane.ratoteImage((float)angle); //旋转图像

}

});

Container container=getContentPane(); //得到窗口容器

imagePane.loadImage("image0.jpg"); //装载图片

container.add(imagePane,BorderLayout.CENTER); //增加组件到容器上

container.add(jSlider,BorderLayout.SOUTH);

setSize(250,250); //设置窗口尺寸

setVisible(true); //设置窗口可视

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序

}

public static void main(String[] args){

new RotateImageDemo();

}

class ImagePane extends JPanel {

Image image;

BufferedImage bufImage; //用于显示的缓冲区图像

BufferedImage originalBufImage; //原始缓冲区图像

Graphics2D bufImageG; //缓冲区图像的图形环境

public void loadImage(String fileName) {

image = this.getToolkit().getImage(fileName); //取得图像

MediaTracker mt = new MediaTracker(this); //实例化媒体加载器

mt.addImage(image, 0); //增加图像到加载器中

try {

mt.waitForAll(); //等待图片加载

} catch (Exception ex) {

ex.printStackTrace(); //输出出错信息

}

originalBufImage = new BufferedImage(image.getWidth(this),image.getHeight(this),BufferedImage.TYPE_INT_ARGB); //创建原始缓冲区图像

bufImage = originalBufImage;

bufImageG = bufImage.createGraphics(); //创建bufImage的图形环境

bufImageG.drawImage(image, 0, 0, this); //传输源图像数据到缓冲区图像中

repaint(); //重绘组件

}

//过滤图像

public void ratoteImage(double angle) {

if (bufImage == null)

return; //如果bufImage为空则直接返回

BufferedImage filteredBufImage =new BufferedImage(image.getWidth(this) ,image.getHeight(this),BufferedImage.TYPE_INT_ARGB); //过滤后的图像

AffineTransform transform = new AffineTransform(); //仿射变换对象

transform.rotate(angle,125,75); //旋转图像

AffineTransformOp imageOp = new AffineTransformOp(transform, null);//创建仿射变换操作对象

imageOp.filter(originalBufImage, filteredBufImage);//过滤图像,目标图像在filteredBufImage

bufImage = filteredBufImage; //让用于显示的缓冲区图像指向过滤后的图像

repaint(); //重绘组件

}

//重载容器的paintComponent()方法

public void paint(Graphics g) {

super.paintComponent(g);

if (bufImage != null) {

Graphics2D g2 = (Graphics2D) g;

g2.drawImage(bufImage,0,0,this); //绘制图片

}

}

}

}


文章标题:仿射变换java代码的简单介绍
文章出自:http://cqcxhl.com/article/phgioj.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP