




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、项目效果图:项目源代码:import java.awt.*;import java.awt.event.*;import java.awt.geom.Ellipse2D;import java.awt.geom.Line2D;import java.awt.geom.Rectangle2D;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import javax.swing.*;import javax.swing.fi
2、lechooser.FileNameExtensionFilter;/* author: 蒋冰 */public class ImageDraw private int typeFlag = 1;private int endFlag = 1;private int strokeTemp = 1;private Color color = Color.black;private BasicStroke stroke = new BasicStroke();private float pre_x = 0;private float pre_y = 0;private float start_x
3、= 0;private float start_y = 0;private float start_X = 0;private float start_Y = 0;private float end_x = 0;private float end_y = 0;private float width = 0;private float height = 0;private final int AREA_WIDTH = 700;private final int AREA_HEIGHT = 400;private Line2D.Float line;private Rectangle2D.Floa
4、t rect;private Ellipse2D.Float ellipse;private File imageFile;BufferedImage image = new BufferedImage(AREA_WIDTH , AREA_HEIGHT , BufferedImage.TYPE_INT_RGB);Graphics2D g2 = (Graphics2D) image.getGraphics();private JFrame frame = new JFrame(简单手绘程序);private DrawPanel drawArea = new DrawPanel();JButton
5、 buttonShowColor = new JButton();public void init()g2.fillRect(0 , 0 ,AREA_WIDTH , AREA_HEIGHT);g2.setColor(Color.black);drawArea.setPreferredSize(new Dimension(AREA_WIDTH , AREA_HEIGHT);drawArea.addMouseMotionListener(new MouseMotionAdapter()public void mouseDragged(MouseEvent e)do_mouseDragged(e);
6、);drawArea.addMouseListener(new MouseAdapter()public void mousePressed(MouseEvent e1)do_mousePressed(e1);public void mouseReleased(MouseEvent e)g2.setColor(color);g2.setStroke(stroke);endFlag = typeFlag;drawArea.repaint();public void mouseEntered(MouseEvent e)frame.setCursor(new Cursor(Cursor.CROSSH
7、AIR_CURSOR);public void mouseExited(MouseEvent e)frame.setCursor(null););frame.add(drawArea);JMenuBar mb = new JMenuBar();JMenu menuFile = new JMenu(文件);JMenuItem menuItemSave = new JMenuItem(保存);menuItemSave.addActionListener(new ActionListener()public void actionPerformed(ActionEvent arg0) do_save
8、_actionPerformed(arg0););JMenuItem menuItemOpen = new JMenuItem(打开);menuItemOpen.addActionListener(new ActionListener()public void actionPerformed(ActionEvent arg0) try do_open_actionPerformed(arg0); catch (IOException e) / TODO 自动生成的 catch 块e.printStackTrace(););JMenuItem menuItemExit = new JMenuIt
9、em(退出);menuItemExit.addActionListener(new ActionListener()public void actionPerformed(ActionEvent arg0) System.exit(0););menuFile.add(menuItemSave);menuFile.add(menuItemOpen);menuFile.add(menuItemExit);mb.add(menuFile);JPanel buttonPanel = new JPanel();FlowLayout layout = new FlowLayout(FlowLayout.C
10、ENTER, 20, 20);buttonPanel.setLayout(layout);buttonPanel.setBackground(Color.gray);JButton buttonDraw = new JButton(绘图);buttonDraw.addActionListener(new ActionListener()public void actionPerformed(ActionEvent arg0) typeFlag = 1;);buttonPanel.add(buttonDraw);JButton buttonLine = new JButton(直线);butto
11、nLine.addActionListener(new ActionListener()public void actionPerformed(ActionEvent arg0) typeFlag = 2;);buttonPanel.add(buttonLine);JButton buttonRect = new JButton(矩形);buttonRect.addActionListener(new ActionListener()public void actionPerformed(ActionEvent arg0) typeFlag = 3;);buttonPanel.add(butt
12、onRect);JButton buttonEllipse = new JButton(椭圆);buttonEllipse.addActionListener(new ActionListener()public void actionPerformed(ActionEvent arg0) typeFlag = 4;);buttonPanel.add(buttonEllipse);JButton buttonDrop = new JButton(清除);buttonDrop.addActionListener(new ActionListener()public void actionPerf
13、ormed(ActionEvent arg0) typeFlag = 5;g2.setColor(Color.white);g2.fillRect(0 , 0 ,AREA_WIDTH , AREA_HEIGHT);drawArea.repaint(););buttonPanel.add(buttonDrop);JButton buttonColorChoose = new JButton(选择颜色);buttonColorChoose.addActionListener(new ActionListener()public void actionPerformed(ActionEvent ar
14、g0) do_buttonColorChoose_actionPerformed(arg0););buttonPanel.add(buttonColorChoose);buttonShowColor = new JButton();buttonPanel.add(buttonShowColor);JLabel label = new JLabel(边框:);buttonPanel.add(label); JComboBox combox = new JComboBox(); for(int i=1; i=36; i+) combox.addItem(i); combox.addItemList
15、ener(new ItemListener() public void itemStateChanged(ItemEvent e) strokeTemp = Integer.parseInt(e.getItem().toString() ;stroke = new BasicStroke(strokeTemp););buttonPanel.add(combox);frame.add(buttonPanel,BorderLayout.SOUTH);frame.add(mb,BorderLayout.NORTH);frame.setBackground(Color.gray);frame.pack
16、();frame.setVisible(true);public static void main(String args) new ImageDraw().init();class DrawPanel extends JPanelpublic void paint(Graphics g)Graphics2D g2 = (Graphics2D) g;g2.clearRect(0, 0, AREA_WIDTH, AREA_HEIGHT);g2.setColor(color);g2.setStroke(stroke);g2.drawImage(image , 0 , 0 , null);if(ty
17、peFlag = 2)line = new Line2D.Float(start_x, start_y, end_x, end_y);g2.draw(line);if(typeFlag = 3)rect = new Rectangle2D.Float(start_X, start_Y, width, height);g2.draw(rect);if(typeFlag = 4)ellipse = new Ellipse2D.Float(start_X, start_Y, width, height);g2.draw(ellipse);if(typeFlag = 5)g2.setColor(Col
18、or.white);g2.fillRect(0 , 0 ,AREA_WIDTH , AREA_HEIGHT);private void do_save_actionPerformed(ActionEvent arg0) / TODO 自动生成的方法存根JFileChooser chooser = new JFileChooser();chooser.setSelectedFile(new File(imageFile.getName();int option = chooser.showSaveDialog(null);if(option = JFileChooser.APPROVE_OPTI
19、ON)File file = chooser.getSelectedFile();try ImageIO.write(image, jpg, file); catch (IOException e) / TODO 自动生成的 catch 块e.printStackTrace();private void do_open_actionPerformed(ActionEvent arg0) throws IOException / TODO 自动生成的方法存根JFileChooser chooser = new JFileChooser();chooser.setFileFilter(new Fi
20、leNameExtensionFilter(图片文件,jpg,jpeg,jif);chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);int option = chooser.showOpenDialog(null);if(option = JFileChooser.APPROVE_OPTION)imageFile = chooser.getSelectedFile();Image sourceImage = ImageIO.read(imageFile);g2.drawImage(sourceImage, 0, 0, sourceIma
21、ge.getWidth(null), sourceImage.getHeight(null), null);drawArea.repaint();private void do_buttonColorChoose_actionPerformed(ActionEvent arg0) / TODO 自动生成的方法存根JColorChooser chooser = new JColorChooser();color = chooser.showDialog(null, 请选取颜色, Color.black);buttonShowColor.setBackground(color);private void do_mouseDragged(MouseEvent e) end_x = e.getX();end_y = e.getY();width = Math.abs( end_x - start_x );height = Math.abs( end_y - start_y
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- YC/T 598-2023烟叶醇化仓库基础环境参数监测指南
- 2002年江苏省淮安市中考数学真题【含答案、解析】
- 安全防范系统项目管理工作领域4安全防范系统施工质量管理88
- 考研复习-风景园林基础考研试题a4版附答案详解
- 生物发酵法农药原药及绿色农药制剂项目可行性研究报告写作模板-申批备案
- 《风景园林招投标与概预算》试题A附参考答案详解【突破训练】
- 2025-2026年高校教师资格证之《高等教育法规》通关题库带答案详解ab卷
- 2024年济南演艺集团有限责任公司人员招聘笔试备考题库及答案详解(真题汇编)
- 2025年黑龙江省五常市辅警招聘考试试题题库及答案详解(各地真题)
- 激光雷达船舶靠泊跟踪助航技术
- 咨询公司项目管理制度
- 自动化控制技术试题及答案
- 2025-2030中国船用滑动轴承座行业市场现状供需分析及投资评估规划分析研究报告
- 2025届河南省青桐鸣5月全真模拟卷·高考考前适应性考试-生物试题(含答案)
- 办公软件MS Office应用试题及答案
- 人员结构分析总结模版
- 农村三资管理
- 2025年“铸牢中华民族共同体意识”知识竞赛题库及答案
- 【机床输出轴零件的加工工艺及夹具设计9500字(论文)】
- 2024年湖南出版中南传媒招聘笔试真题
- 【初中地理】七年级地理下册全册期末总复习(课件)-2024-2025学年七年级地理课件(人教版2024年)
评论
0/150
提交评论