简单的网站制作网页设计与网站建设有区别吗
简单的网站制作,网页设计与网站建设有区别吗,智能网站建设策划,旧网站如何优化最近几天在做一个项目#xff0c;因为涉及到了图片(绝大部分都不是整图#xff0c;是把一张张的大图切成小图#xff0c;也就是Title)的翻转以及90旋转#xff0c;弄得焦头烂额。在网上搜索好几天#xff0c;发现用到的方法都是比较公式化的#xff0c;对于只是在绘图的时…最近几天在做一个项目因为涉及到了图片(绝大部分都不是整图是把一张张的大图切成小图也就是Title)的翻转以及90°旋转弄得焦头烂额。在网上搜索好几天发现用到的方法都是比较公式化的对于只是在绘图的时候需要显示翻转而不需要另外生成图片的情况这些代码用起来非常的麻烦。最后仔细的研究了一下JDK文档用Graphics2D很简单的就实现了以下功能1、图片的翻转包括水平翻转以及垂直翻转2、图片的任意角度旋转。因为工程需要代码里面都直接写成了90根据需要可以对这个值进行改动以符合需求。3、可以使用组合操作比如水平翻转旋转或者垂直水平旋转任意。以下是代码:package Demo628;import java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;public class ImageRote{public static void main(String[] args){JFrame frame new TransformFrame();frame.setVisible(true);}}class TransformFrame extends JFrame implements ActionListener{//添加几个按钮方便操作。JButton rote new JButton(旋转) ;JButton flipX new JButton(水平翻转);JButton flipY new JButton(垂直翻转);JButton zoomIn new JButton(放大) ;JButton zoomOut new JButton(缩小) ;public TransformFrame(){setTitle(TransformTest);setSize(400, 400);addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});Container contentPane getContentPane();canvas new TransPanel();contentPane.add(canvas, Center);JPanel buttonPanel new JPanel();buttonPanel.add(rote);rote.addActionListener(this);buttonPanel.add(flipX);flipX.addActionListener(this);buttonPanel.add(flipY);flipY.addActionListener(this);buttonPanel.add(zoomIn) ;zoomIn.addActionListener(this) ;buttonPanel.add(zoomOut) ;zoomOut.addActionListener(this) ;contentPane.add(buttonPanel, North);}public void actionPerformed(ActionEvent event){Object source event.getSource();//对于source ???这种方法在特殊的情况下出现错误所以需要酌情使用event.getSource().equals()方法来替代if (source rote){canvas.setRotate();} elseif (source flipX){canvas.flipX();} elseif (source flipY){canvas.flipY();} elseif (source zoomIn){canvas.zoomIn();} elseif (source zoomOut){canvas.zoomOut();}}private TransPanel canvas;}class TransPanel extends JPanel{//水平翻转比例的标志。-1表示需要进行水平翻转int m_nFlipXScale 1 ;//垂直翻转比例的标志。-1表示需要进行垂直翻转int m_nFlipYScale 1 ;//旋转的角度。因为工程需要代码中直接写成了90可以根据具体需要动态修改以符合实际情况int roteAngle 0 ;//缩放比例。默认的比例0表示没有翻转具体的翻转大小通过一个方法:getZoomSize()获取int zoomLevel 0 ;public TransPanel(){//首先载入一张图片。img new ImageIcon(D000.GIF).getImage();}public void paintComponent(Graphics g){super.paintComponent(g);g.drawImage(img,0,0,this) ;drawTransImage(g,img.getWidth(this),img.getHeight(this),zoomLevel) ;}public void drawTransImage(Graphics g,int drawx,int drawy,int zoom){int x 0 ;int y 0 ;int w img.getWidth(this) ;int h img.getHeight(this) ;int zoomw getZoomSize(w,zoom) ;int zoomh getZoomSize(h,zoom) ;int xPos 0 ;int yPos 0 ;if (m_nFlipXScale -1)xPos -zoomw ;if (m_nFlipYScale -1)yPos -zoomh ;Graphics2D g2 (Graphics2D)g ;//转换坐标原点。这步不要也成但是将当前位置转换为坐标原点后可以节省好多计算步骤非常好用。//不过记得用完了以后一定要把原点转换回来要不然其他地方就乱了g2.translate(drawx,drawy);if (roteAngle ! 0)g2.rotate(Math.toRadians(m_nFlipXScale * m_nFlipYScale * roteAngle),zoomw 1,zoomh 1);//上面的m_nFlipXScale * m_nFlipYScale需要特殊说明一下因为实际使用中可能遇到各种组合的情况比如//先flipX或者flipY以后然后再旋转这时候图片的旋转方向就会出现错误加上这段代码可以保证无论使用哪种组合//操作方式都保证在旋转图片的时候是按照顺时针的方向进行旋转。if (m_nFlipXScale -1)g2.scale(-1,1);//第一个值表示水平-1表示等宽水平翻转Math.abs(m_nFlipXScale)的值越大出来的图片就越宽if (m_nFlipYScale -1)g2.scale(1,-1);//第二个值表示垂直-1表示等高垂直翻转Math.abs(m_nFlipYScale)的值越大出来的图片就越高//显示图片g2.drawImage(img,xPos,yPos,xPos zoomw,yPos zoomh,x,y,w,h,null) ;g2.translate(-drawx,-drawy);}public void setRotate(){roteAngle 90 ;roteAngle % 360 ;repaint();}public void flipX(){m_nFlipXScale -m_nFlipXScale ;repaint();}public void flipY(){m_nFlipYScale -m_nFlipYScale ;repaint();}public void zoomIn(){zoomLevel ;repaint();}public void zoomOut(){zoomLevel-- ;repaint();}public static final int getZoomSize(int sourceSize,int zoomLevel){if (zoomLevel 0)return sourceSize ;elseif (zoomLevel 0)return sourceSize / (Math.abs(zoomLevel) 1) ;elsereturn sourceSize * (zoomLevel 1) ;}private Image img;}以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持脚本之家。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/90353.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!