想要坑别人吗?想要创造一个只有自己能看懂的文件吗?
来看看吧!
//实现方法
(1)先定义要实现的类,我先定义了一个抽象类
//图形类 abstract class Shape{ int x,y; int x1,y1; Color color ; Graphics g ; byte type ; public abstract void draw(Graphics g) ; } //直线类 class LineShape extends Shape{ public LineShape(int x, int y ,int x1,int y1,Color color){ this.x = x ; this.y = y ; this.x1 = x1 ; this.y1 = y1 ; this.color = color ; this.type = 0; } @Override public void draw(Graphics g) { g.setColor(color) ; g.drawLine(x, y, x1, y1) ; } } //圆类 class OvalShape extends Shape{ public OvalShape(int x,int y, int x1,int y1,Color color){ this.x = x ; this.y = y ; this.x1 = x1 ; this.y1 = y1 ; this.color = color ; this.type = 1; } @Override public void draw(Graphics g) { g.setColor(color) ; g.drawOval((x+x1)/2,(y+y1)/2,(x1-x)/2 ,(y1-y)/2 ); } } //图片类 class picture extends Shape{ int a ; int b ; int cl[][] ; public picture(int a,int b,int cl[][]){ this.type =2 ; this.a =a ; this.b =b ; this.cl =cl ; } public void draw(Graphics g){ for(int k=0;k<a;k++){ for(int j=0;j<b;j++){ Color c = new Color(cl[k][j]) ; g.setColor(c); g.drawLine(k+100,j+100,k+100,j+100); } } } }
(2)总方法类
public class BmpSaveStart { Graphics g ; public static void main(String[] args) { new BmpSaveStart() .UI(); } public void UI(){ JFrame jf = new JFrame(); jf.setSize(600,600); jf.setTitle("图片的存储"); jf.setBackground(Color.WHITE ); JMenuBar bar = new JMenuBar() ; JMenu menu1 = new JMenu("选项") ; JMenuItem m1 = new JMenuItem("画圆"); JMenuItem m2 = new JMenuItem("画线"); JMenuItem m3 = new JMenuItem("存储"); JMenuItem m4 = new JMenuItem("打开"); JMenuItem m5 = new JMenuItem("图片"); menu1.add(m1) ; menu1.add(m2) ; menu1.add(m3) ; menu1.add(m4) ; menu1.add(m5) ; bar.add(menu1); jf.setJMenuBar(bar); jf.setDefaultCloseOperation(3); jf.setVisible(true) ; PaintDemo p = new PaintDemo(g,jf) ; m1.setActionCommand("画圆"); m2.setActionCommand("画线"); m3.setActionCommand("存储"); m4.setActionCommand("打开"); m5.setActionCommand("图片") ; m1.addActionListener(p); m2.addActionListener(p); m3.addActionListener(p); m4.addActionListener(p); m5.addActionListener(p); } }
(3)监听类
class PaintDemo implements MouseListener,ActionListener{ ImageIcon img = new ImageIcon("Images/100.gif"); BufferedImage bufImage = new BufferedImage(img.getIconWidth(),img.getIconHeight(),BufferedImage.TYPE_INT_RGB); int x,y; int x1,y1; JFrame jf ; Graphics g ; String str ; Color c ; int cr ; int cl[][] = new int[1000][1000] ; ArrayList<Shape> shapes = new ArrayList<Shape>() ; Random random =new Random() ; int R ; int G ; int B ; public PaintDemo( Graphics g ,JFrame jf){ this.jf = jf; this.g = jf.getGraphics(); } @Override public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent e) { x=e.getX(); y=e.getY(); } @Override public void mouseReleased(MouseEvent e) { x1 = e.getX(); y1 = e.getY(); setColor() ; if(str.equals("画圆")){ // paintOval(); Shape shape = new OvalShape(x, y, x1, y1,c) ; shape.draw(g); shapes.add(shape) ; } if(str.equals("画线")){ //paintLine(); Shape shape = new LineShape(x, y, x1, y1,c) ; shape.draw(g); shapes.add(shape) ; /*File f =new File("D:\\test.txt") ; if(f==null){ try { f.createNewFile(); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } }*/ } } public void saveFile(String path,ArrayList<Shape> shapes){ try{ //文件输出流 FileOutputStream fos = new FileOutputStream(path) ; //将文件输出流包装成可写基本类型的流 DataOutputStream dos = new DataOutputStream(fos) ; dos.writeInt(shapes.size());//写入队列中图形的个数 //读取队列 for(int i=0;i<shapes.size();i++){ //取出一种形状 Shape shape = shapes.get(i); byte type = shape.type ; if(type==0){//根据type判断类型,如果是直线 System.out.println("开始存储直线") ; dos.writeByte(type); LineShape line = (LineShape) shape ;//强制转换为直线类 //写直线形状的数据; int x = line.x ; int y = line.y ; int x1 = line.x1 ; int y1 = line.y1 ; Color color = line.color ; cr = color.getRGB(); dos.writeInt(x); dos.writeInt(y); dos.writeInt(x1); dos.writeInt(y1); dos.writeInt(cr); }else if(type == 1){ dos.writeByte(type); System.out.println("开始存储圆") ; OvalShape oval = (OvalShape) shape ;//强制转换为圆类 //写直线形状的数据; int x = oval.x ; int y = oval.y ; int x1 = oval.x1 ; int y1 = oval.y1 ; Color color = oval.color ; cr = color.getRGB() ; dos.writeInt(x); dos.writeInt(y); dos.writeInt(x1); dos.writeInt(y1); dos.writeInt(cr); }else if(type ==2){ dos.writeByte(type) ; picture pl = (picture) shape ; System.out.println("开始存储图片") ; int width = pl.a ; int height = pl.b ; dos.writeInt(width) ; dos.writeInt(height) ; for(int k=0;k<width;k++){ for(int j=0;j<height;j++){ int t = pl.cl[k][j]; dos.writeInt(t) ; } } } } dos.flush() ; fos.close(); }catch(Exception e){ e.printStackTrace(); } } public ArrayList<Shape> readFile(String path){ try{ //创建文件对象的输入流 FileInputStream fis = new FileInputStream(path); //将文件输入流包装成可读基本类型的流 DataInputStream dis = new DataInputStream(fis); //先读取文件长度,即总共的形状个数 int len = dis.readInt() ; for(int i=0 ;i<len;i++){ byte type = dis.readByte(); if(type==0){ int a= dis.readInt(); int b= dis.readInt(); int c= dis.readInt(); int d= dis.readInt(); Color f= new Color(dis.readInt()); LineShape line = new LineShape(a,b,c,d,f); //读取直线的设置 //将直线存入队列 shapes.add(line) ; }else if(type == 1){ int a= dis.readInt(); int b= dis.readInt(); int c= dis.readInt(); int d= dis.readInt(); Color f= new Color(dis.readInt()); System.out.println("开始读取圆") ; OvalShape oval = new OvalShape(a,b,c,d,f); shapes.add(oval) ; }else if(type == 2){ int a= dis.readInt(); int b= dis.readInt(); for(int k=0;k<a;k++){ for(int j=0;j<b;j++){ cl[k] [j] = dis.readInt(); } } picture pic = new picture(a,b,cl) ; shapes.add(pic) ; } }}catch(Exception e){ e.printStackTrace(); } return shapes ; } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } public void setColor(){ R =random.nextInt(255); G =random.nextInt(255); B =random.nextInt(255); c=new Color(R,G,B) ; } /* public void paintLine(){ setColor(); g.drawLine(x, y, x1, y1) ; } public void paintOval(){ setColor(); g.drawOval((x+x1)/2,(y+y1)/2,(x1-x)/2 ,(y1-y)/2 ); } */ @Override public void actionPerformed(ActionEvent e) { str = e.getActionCommand() ; jf.addMouseListener(this); if(str.equals("存储")){ saveFile("D:\\test.txt",shapes) ; } if(str.equals("打开")){ readFile("D:\\test.txt") ; for(int i=0;i<shapes.size();i++){ Shape shape = shapes.get(i); if(shape.type ==0){ System.out.println("确定是圆类型"); LineShape line = (LineShape)shape ; line.draw(g); }else if(shape.type==1){ System.out.println("确定是圆类型"); OvalShape oval = (OvalShape)shape ; oval.draw(g); }else if(shape.type ==2){ System.out.println("确定是图片类型"); picture pl = (picture)shape ; pl.draw(g) ; } } } if(str.equals("图片")){ Thread th = new Thread(new Runnable(){ ; public void run(){ while(true){ try{ Thread.sleep(30) ; Graphics g1 = bufImage.getGraphics(); g1.drawImage(img.getImage(), 0,0,null); jf.getGraphics().drawImage(bufImage,100,100,null) ; int width = bufImage.getWidth(); int height = bufImage.getHeight() ; for(int k=0;k<width;k++){ for(int j=0;j<height;j++){ int p =bufImage.getRGB(k,j) ; cl[k][j] = p ; } } picture pe =new picture(width,height,cl); shapes.add(pe); }catch(Exception e){ e.printStackTrace(); } } }}); th.start(); } } }
相关推荐
在C#编程中,数据加密和解密是确保信息安全的重要手段。通过加密,可以保护敏感信息免受未经授权的访问和篡改。本实例探讨了如何使用C#来实现数据加密,特别是针对文件中的机密数据。 首先,我们要了解C#中用于数据...
本资料包"行业分类-设备装置-密钥信息的生成、内容信息的加密与解码、记录媒体与传输方法.zip"专注于探讨这三个核心领域,旨在提供一套全面的安全策略。 首先,我们来看密钥信息的生成。密钥是加密技术的基础,它...
2. **433MHz编码与解码**:无线通信涉及将数据编码为无线电波,然后在接收端解码回原始数据。433MHz模块的解码通常涉及到识别信号的脉冲宽度、频率和时序,以恢复信息。描述中提到的"433解码程序"可能是一个C语言...
3. **数据加密**:将原始文本中的每个字符替换为其对应的哈弗曼编码,得到压缩后的数据。如果字符集不是二进制安全的,可以先进行转义处理。 4. **数据解码**:为了正确解码,我们需要保留哈弗曼树的信息。通常,...
Java RSA数据加密组件包是一个基于Java平台的加密工具,它主要利用了RSA(Rivest–Shamir–Adleman)非对称加密算法。RSA是一种广泛应用于网络安全的公钥加密技术,由三位数学家Ron Rivest、Adi Shamir和Leonard ...
数据加密技术是保护信息安全的关键手段,它通过特定的算法将原始信息转化为无法识别的密文,确保信息在传输过程中的安全。VB6.0是一种古老的编程环境,它也可以用来实现数据加密算法,使得开发者能够在应用程序中...
然而,值得注意的是,虽然解码工具可能有98%的成功率,但这并不意味着所有加密的文件都能被成功解密,因为加密技术的复杂性和不断更新,以及可能的多层加密策略。 PHP加密文件解码工具的工作原理通常涉及逆向工程,...
综上所述,这款工具涵盖了银联8583报文处理的核心环节,包括报文结构解析、安全校验、数据加密和解密等。对于从事银联接口开发或者需要处理8583报文的人员来说,它能极大地提升工作效率和交易安全性。
通过集成Botan,SQLite3加密编解码器可以利用这些先进的加密技术,确保数据在存储和传输过程中的安全性。 这个压缩包文件“botansqlite3-master”很可能包含了该项目的源代码,供开发者编译和使用。通常,这样的...
在信息技术领域,数据安全至关重要,而数据加密与解密是保障信息安全的核心技术之一。C++作为一种强大的面向对象的编程语言,提供了丰富的库函数和高级特性,可以用来编写高效且灵活的加密算法。本项目是一个基于C++...
总结来说,这个Java示例展示了如何使用Hex编码和解码配合AES加密算法进行数据安全保护。在实际应用中,为了提高安全性,通常会采用更复杂的加密模式(如CBC或CFB),并使用随机生成的密钥,而不是固定或硬编码的密钥...
本篇将详细讲解Delphi中涉及到的HMAC-SHA签名、SHA加密、MD5加密、URL编码与解码以及Base64编码与解码的相关知识。 首先,HMAC-SHA(Hash-based Message Authentication Code - Secure Hash Algorithm)是一种基于...
客户端收到公钥后,可以使用`javax.crypto.Cipher`类进行数据加密。首先,通过Base64解码恢复公钥,然后初始化Cipher实例,设置为加密模式,使用公钥作为参数。最后,使用`Cipher#doFinal()`方法对数据进行加密。 ...
密码管理与数据加密是保障个人信息安全的关键环节,尤其在当今数字化时代,个人隐私和敏感信息的保护至关重要。本文将深入探讨这两个概念,并提供实用的建议。 首先,密码管理是通过集中化的方式,帮助用户妥善存储...
本压缩包文件“批处理大全 bat 传exe 加密bat 解码”包含了关于dos批处理、exe生成以及加密解密的相关工具和资源,这些都是系统管理和自动化操作的重要组成部分。 首先,让我们深入了解一下**dos批处理**。DOS...
加密是将明文数据转化为无法轻易理解的密文,以保护数据的安全性。解码则是加密的逆过程,将密文恢复为原始的明文信息。在这个C++程序中,用户需要输入一个密码,这个密码被用作加密和解码的关键。 C++是一种通用的...
在Cocos2d-x开发中,用户数据加密是保护应用程序数据安全的重要环节。Cocos2d-x是一个跨平台的游戏开发框架,它允许开发者用C++编写代码,然后在多个操作系统上运行,包括iOS、Android、Windows等。由于游戏通常会...
需要注意的是,AES用于数据加密,速度快但密钥管理复杂,而RSA用于公钥加密和签名,安全性高但计算量大。在实际应用中,通常结合两者使用:AES用于加密大量数据,RSA用于加密AES的密钥,确保密钥的安全传输。 此外...
如果需要加密,可以结合其他加密算法(如AES、RSA等)与Base64一起使用,先加密数据,再进行Base64编码,这样即使数据被Base64解码,也仍然无法理解其内容,除非先解密。 提供的压缩包文件可能包含一个或多个工具,...