新聞中心
出現(xiàn)'class'or 'interface'expected
/*你的代碼編譯不能通過,我用eclipse改正了一下,這回行了~代碼如下*/
成都創(chuàng)新互聯(lián)是一家專業(yè)提供玉樹企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、網(wǎng)站制作、H5建站、小程序制作等業(yè)務(wù)。10年已為玉樹眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
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);// 將用戶坐標(biāo)系的原點(0,0)平移到屏幕坐標(biāo)系x為100,y為50像素點的位置
g2.translate(100, 50);// radians=degree * pie / 180
g2.rotate((45 * java.lang.Math.PI) / 180); // 將圖形旋轉(zhuǎn)45
g2.fill(rec1); // 畫左上角坐標(biāo)為(0,0),長與寬為100的填充矩形,創(chuàng)建仿射變換對象,設(shè)置幾何圖形變換為默認(rèn)方式
g2.setTransform(new AffineTransform());// 創(chuàng)建一個AlphaCcomposite類的復(fù)合對象ac,規(guī)則為50%的透明度
AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
0.5f);
g2.setComposite(ac); // 設(shè)定重疊對象的顏色復(fù)合方式
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實現(xiàn)圖片翻轉(zhuǎn)的代碼
重載渲染控件的paintComponent(Graphics g)方法.
設(shè)你當(dāng)前圖像實例為img,已初始化,需要旋轉(zhuǎn)的角度為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 類中有對當(dāng)前描繪環(huán)境進(jìn)行仿射變換的方法,包括translate,scale,rotate,也可以直接設(shè)置仿射變換矩陣,利用這點就可以根據(jù)所需要的實現(xiàn)方式來進(jìn)行描繪.
幫我修改一下java的程序
public class RotateImageDemo extends JFrame{
JSlider jSlider = new JSlider(JSlider.HORIZONTAL,0,180,0); //設(shè)定旋轉(zhuǎn)角度
ImagePane imagePane=new ImagePane(); //繪制圖像的面板
public RotateImageDemo(){
super("圖像旋轉(zhuǎn)演示"); //調(diào)用父類構(gòu)造函數(shù)
jSlider.setPaintTicks(true); //繪制標(biāo)志位
jSlider.setMajorTickSpacing(45); //設(shè)置標(biāo)志尺寸
jSlider.setMinorTickSpacing(5);
jSlider.setPaintLabels(true); //繪制出數(shù)字
jSlider.setBorder(new javax.swing.border.TitledBorder(BorderFactory.createEmptyBorder(), "圖像的旋轉(zhuǎn)度")); //設(shè)置邊框
jSlider.addChangeListener(new ChangeListener() { //滑動條jSlider事件處理
public void stateChanged(ChangeEvent ce) {
int value=((JSlider) ce.getSource()).getValue(); //獲取設(shè)置值
double angle =(float)value/180*Math.PI ; //得到旋轉(zhuǎn)角度(弧度制)
imagePane.ratoteImage((float)angle); //旋轉(zhuǎn)圖像
}
});
Container container=getContentPane(); //得到窗口容器
imagePane.loadImage("image0.jpg"); //裝載圖片
container.add(imagePane,BorderLayout.CENTER); //增加組件到容器上
container.add(jSlider,BorderLayout.SOUTH);
setSize(250,250); //設(shè)置窗口尺寸
setVisible(true); //設(shè)置窗口可視
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //關(guān)閉窗口時退出程序
}
public static void main(String[] args){
new RotateImageDemo();
}
class ImagePane extends JPanel {
Image image;
BufferedImage bufImage; //用于顯示的緩沖區(qū)圖像
BufferedImage originalBufImage; //原始緩沖區(qū)圖像
Graphics2D bufImageG; //緩沖區(qū)圖像的圖形環(huán)境
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); //創(chuàng)建原始緩沖區(qū)圖像
bufImage = originalBufImage;
bufImageG = bufImage.createGraphics(); //創(chuàng)建bufImage的圖形環(huán)境
bufImageG.drawImage(image, 0, 0, this); //傳輸源圖像數(shù)據(jù)到緩沖區(qū)圖像中
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); //旋轉(zhuǎn)圖像
AffineTransformOp imageOp = new AffineTransformOp(transform, null);//創(chuàng)建仿射變換操作對象
imageOp.filter(originalBufImage, filteredBufImage);//過濾圖像,目標(biāo)圖像在filteredBufImage
bufImage = filteredBufImage; //讓用于顯示的緩沖區(qū)圖像指向過濾后的圖像
repaint(); //重繪組件
}
//重載容器的paintComponent()方法
public void paint(Graphics g) {
super.paintComponent(g);
if (bufImage != null) {
Graphics2D g2 = (Graphics2D) g;
g2.drawImage(bufImage,0,0,this); //繪制圖片
}
}
}
}
本文題目:仿射變換java代碼的簡單介紹
網(wǎng)頁網(wǎng)址:http://www.dlmjj.cn/article/phgioj.html