JAVA日记:[17]画图程序

操作方法

  • 01

    一个简单的画图程序:实现画直线、矩形、圆等基本功能 import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.Button; import java.awt.Choice; import java.awt.Color; import java.awt.Frame; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Label; import java.awt.Panel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.geom.Ellipse2D; import java.awt.geom.Line2D; import java.awt.geom.Rectangle2D; import java.util.Vector; import javax.swing.JColorChooser; class point { int x,y; Color col; int tool; int boarder; public point(int x,int y,Color col,int tool,int boarder) { this.x=x; this.y=y; this.col=col; this.tool=tool; this.boarder=boarder; } } class paintboard extends Frame implements ActionListener,MouseMotionListener,MouseListener,ItemListener{ int xx0=0,yy0=0; int xx1=0,yy1=0; int type=6; int x=-1,y=-1; int con=1;//画笔大小 int Econ=5;//橡皮大小 int toolflag=0;//toolFlag:工具标记 //0:画笔,1:橡皮,2:清除,3:直线 //4:圆,5:矩形 Color c=new Color(0,0,0);//画笔颜色 BasicStroke size=new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);//画笔粗细 point cutflag=new point(-1,-1,c,6,con);//截断标志 Vector paintinfo = null;//点信息向量组 int n=1; //*工具面板--画笔,直线,圆,矩形,多边形,橡皮,清除 Panel toolpPanel; Button eraser,drLine,drCircle,drRect; Button clear,pen; Choice colChoice,sizeChoice,erasercChoice; Button colchooser,tuichu; Label 颜色,大小B,大小E; public paintboard(String s) { super(s); addMouseMotionListener(this); addMouseListener(this); paintinfo=new Vector(); //各工具按钮及选择项 //颜色选择 colChoice= new Choice(); colChoice.add("黑色"); colChoice.add("红色"); colChoice.add("蓝色"); colChoice.add("绿色"); colChoice.addItemListener(this); //画笔大小选择 sizeChoice= new Choice(); sizeChoice.add("1"); sizeChoice.add("3"); sizeChoice.add("5"); sizeChoice.add("7"); sizeChoice.add("9"); sizeChoice.addItemListener(this); //橡皮大小选择 erasercChoice=new Choice(); erasercChoice.add("2"); erasercChoice.add("3"); erasercChoice.add("4"); erasercChoice.add("5"); erasercChoice.addItemListener(this); toolpPanel =new Panel(); clear=new Button("清除"); eraser =new Button("橡皮"); pen =new Button("画笔"); drLine=new Button("画直线"); drCircle=new Button("画圆形"); drRect=new Button("画矩形"); colchooser=new Button("显示调色板"); tuichu = new Button("退出"); //各组件时间监听 clear.addActionListener(this); eraser.addActionListener(this); pen.addActionListener(this); drLine.addActionListener(this); drCircle.addActionListener(this); drRect.addActionListener(this); colchooser.addActionListener(this); tuichu.addActionListener(this); 颜色=new Label("画笔颜色",Label.CENTER); 大小B=new Label("画笔大小",Label.CENTER); 大小E=new Label("橡皮大小",Label.CENTER); //面板添加组件 toolpPanel.add(pen); toolpPanel.add(drLine); toolpPanel.add(drCircle); toolpPanel.add(drRect); toolpPanel.add(颜色);toolpPanel.add(colChoice); toolpPanel.add(大小B);toolpPanel.add(sizeChoice); toolpPanel.add(colchooser); toolpPanel.add(eraser); toolpPanel.add(大小E);toolpPanel.add(erasercChoice); toolpPanel.add(clear); toolpPanel.add(tuichu); //将工具面板添加到APPLET面板 add(toolpPanel,BorderLayout.NORTH); setBounds(60, 60, 800,650); setVisible(true); validate();//生效 addWindowListener(new WindowAdapter() { @SuppressWarnings("unused") public void windowclosing(WindowEvent e) {System.exit(0);} }); } public void paint(Graphics g){ Graphics2D g2d =(Graphics2D)g; point p1,p2; n=paintinfo.size(); if(toolflag==2) g.clearRect(0, 0, getSize().width,getSize().height);//清除 switch(type) { case 3: Line2D line=new Line2D.Double(xx0,yy0,xx1,yy1); g2d.draw(line); break; case 4: Ellipse2D ellipse1= new Ellipse2D.Double(xx0,yy0,Math.abs(xx1-xx0),Math.abs(yy1-yy0)); g2d.draw(ellipse1); break; case 5: Rectangle2D rect1 = new Rectangle2D.Double(xx0,yy0,Math.abs(xx1-xx0),Math.abs(yy1-yy0)); g2d.draw(rect1); default :break; } for (int i = 0; i < n-1; i++) { p1 =(point)paintinfo.elementAt(i); p2=(point)paintinfo.elementAt(i+1); size=new BasicStroke(p1.boarder,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); g2d.setStroke(size); if (p1.tool==p2.tool) { switch (p1.tool) { case 0://画笔 Line2D line1 = new Line2D.Double(p1.x,p1.y,p2.x,p2.y); g2d.draw(line1); break; case 1://橡皮 g.clearRect(p1.x, p1.y,p1.boarder,p1.boarder); break; case 3://画直线 Line2D line2=new Line2D.Double(p1.x,p1.y,p2.x,p2.y); g2d.draw(line2);break; case 4://画圆 Ellipse2D ellipse=new Ellipse2D.Double(p1.x,p1.y,Math.abs(p2.x-p1.x),Math.abs(p2.y-p1.y)); g2d.draw(ellipse); break; case 5://画矩形 Rectangle2D rect=new Rectangle2D.Double(p1.x,p1.y,Math.abs(p2.x-p1.x),Math.abs(p2.y-p1.y)); g2d.draw(rect); break; case 6://截断,跳过 i=i+1; break; default: break; } } } } public void itemStateChanged(ItemEvent e) { if (e.getSource()==colChoice) {//预选颜色 String name = colChoice.getSelectedItem(); if (name=="黑色") { c = new Color(0,0,0);} else if (name=="红色") { c = new Color(255,0,0); } else if (name=="绿色") { c = new Color(0,255,0); } else if (name=="蓝色") { c = new Color(0,0,255); } } else if (e.getSource()==sizeChoice) {//画笔大小 String selected= sizeChoice.getSelectedItem(); if (selected=="1") { con=1; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); } else if (selected=="3") { con =3; size= new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); } else if (selected=="5") { con=5; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); } else if (selected=="7") { con=7; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); } else if (selected=="9") { con=9; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); } } else if (e.getSource()==erasercChoice) {//橡皮大小 String esize= erasercChoice.getSelectedItem(); if (esize=="2") { Econ=3*3; } else if (esize=="3") { Econ=4*4; } else if (esize=="4") { Econ=5*5; } else if (esize=="5") { Econ=6*6; } } } @Override public void mouseClicked(java.awt.event.MouseEvent e) { } @Override public void mousePressed(java.awt.event.MouseEvent e) { xx0=(int)e.getX(); yy0=(int)e.getY(); point p2; switch (toolflag) { case 3://直线 type=3; x=(int)e.getX(); y=(int)e.getY(); p2 = new point(x, y, c, toolflag, con); paintinfo.addElement(p2); break; case 4://圆 type=4; x=(int)e.getX(); y=(int)e.getY(); p2 = new point(x, y ,c, toolflag, con); paintinfo.addElement(p2); break; case 5://矩形 x=(int)e.getX(); y=(int)e.getY(); p2= new point(x, y, c, toolflag, con); paintinfo.addElement(p2); break; default:type=6; break; } } @Override public void mouseReleased(java.awt.event.MouseEvent e) { // TODO Auto-generated method stub } @SuppressWarnings("unchecked") @Override public void mouseEntered(java.awt.event.MouseEvent e) { point p3; switch (toolflag) { case 0://画笔 paintinfo.addElement(cutflag); break; case 1: paintinfo.addElement(cutflag);break; case 3://直线 x=(int)e.getX(); y=(int)e.getY(); p3=new point(x,y, c, toolflag, con); paintinfo.addElement(p3); paintinfo.addElement(cutflag); repaint(); break; case 4://圆 x=(int)e.getX(); y=(int)e.getY(); p3 = new point(x, y, c, toolflag, con); paintinfo.addElement(p3); paintinfo.addElement(cutflag); repaint(); break; case 5://矩形 x=(int)e.getX(); y=(int)e.getY(); p3 = new point(x, y, c, toolflag, con); paintinfo.addElement(p3); paintinfo.addElement(cutflag); repaint(); break; default: break; } } @Override public void mouseExited(java.awt.event.MouseEvent e) {} @SuppressWarnings("unchecked") @Override public void mouseDragged(java.awt.event.MouseEvent e) { xx1=(int) e.getX(); yy1=(int) e.getY(); point p1; switch (toolflag) { case 0://画笔 x=(int)e.getX(); y=(int)e.getY(); p1 = new point(x,y, c, toolflag, con); paintinfo.addElement(p1); repaint(); break; case 1://橡皮 x=(int)e.getX(); y=(int)e.getY(); p1= new point(x, y,null, toolflag, Econ); paintinfo.addElement(p1); repaint(); break; case 3: case 4: case 5: repaint(); break; default: break; } } @Override public void mouseMoved(java.awt.event.MouseEvent e) { // TODO Auto-generated method stub } @Override public void actionPerformed(ActionEvent e) { if (e.getSource()==pen) {//画笔 toolflag=0; } if (e.getSource()==eraser) {//橡皮 toolflag=1; } if (e.getSource()==clear) {//清除 toolflag=2; paintinfo.removeAllElements(); repaint(); } if (e.getSource()==drLine) {//画线 toolflag=3; } if (e.getSource()==drCircle) {//画圆 toolflag=4; } if (e.getSource()==drRect) {//画矩形 toolflag=5; } if (e.getSource()==colchooser) {//调色板 Color newColor = JColorChooser.showDialog(this,"调色板", c); c = newColor; } if (e.getSource()==tuichu) { System.exit(0); } } } public class Huatu { public static void main(String[] args) { new paintboard("画图程序"); } }

(0)

相关推荐

  • Win7画图程序巧应用 浏览图片多用途

    浏览图片,我们可能更多的使用Windows默认的浏览方式,或者是第三方的比如Google Picasa,或者美图看看等这样的软件实现图片的浏览播放。但除了这些,是否有朋友会记得Win7画图程序呢?她不 ...

  • Win8打开系统自带画图程序的操作办法

    Win8打开系统自带画图程序的操作办法

  • winXP电脑控制面板中的画图程序不见了怎么办?

    如果说以前咱们工作的时候处理到的文字工作比较多的话,那么现在,也许咱们更重视的就是图文结合了,毕竟"有图有真相"是现在这个社会的真理了!所以说,现在不少用户在生活和工作中都会使用到 ...

  • win7系统画图程序背景怎么设为透明

    win7系统画图程序背景怎么设为透明 1.打开图画软件,进入工作界面; 2.选好红色,再按住shift键,画一个标准的圆形; 3.用选择工具将它选中后,在编辑菜单按复制(或者按ctrl+C); 4.再 ...

  • Win10系统自带画图程序编辑图片时提示发生共享冲突的解决方法

    一位刚刚使用windows10系统的用户反馈,自己在使用系统自带画图程序编辑照片时,突然遇到了问题,提示“发生了共享冲突”,最终导致无法保存,这该怎么办呢?今天我们的小编跟大家一起讨论下Win10系统 ...

  • Authorware画图程序怎么绘制花朵图形?

    Authorware中想要画一些图形,该怎么画呢?我们可以直接调用画图程序完成绘画,下面我们就来看看详细的教程. 1.打开Authorware软件,进入它的主界面,如下图: 2.拉一个显示图标到流程线 ...

  • 自带画图程序如何简单处理图片:[7]图形翻转

    有时候教学或者其他地方,我们需要用一些对称的图形,但是对称图形不是很好做,这里小编和大家讨论下画图工具怎样完成图形的翻转. 操作方法 01 打开画图程序,执行打开命令,打开要翻转的图片. 02 拉大画 ...

  • 怎样打开画图程序?

    在我们使用电脑的时候,我们通常会用到画图程序,我们该怎样打开画图程序呢? 操作方法 01 首先,我们用鼠标的左键点击电脑桌面左下方的开始. 02 这时会弹出一个方框, 03 我们把鼠标指向所有程序,这 ...

  • win7系统里程序附件里的画图程序不见了怎样找回

    win7系统中的附件里有一个画图小程序,很实用,不过有时候会不见了.怎样找回呢?本详细告诉你! 操作方法 01 打开桌面上的"计算机",双击打开. 02 找到系统盘C盘,双击打开C ...