Java实现简单的绘图软件

合集下载

javadrawimage的用法

javadrawimage的用法

javadrawimage的用法javadrawimage是Java中用于绘制图像的一个方法。

它可以用于在Java应用程序中绘制图像,以及在GUI中显示图像。

javadrawimage的用法非常简单,只需要使用Graphics对象的drawImage()方法即可。

drawImage()方法接受三个参数:要绘制的图像对象、x坐标和y坐标。

例如,以下代码片段演示了如何使用javadrawimage方法将图像绘制在Java应用程序中:```import java.awt.Graphics;import java.awt.Image;import javax.swing.JFrame;import javax.swing.JPanel;public class DrawImage extends JPanel {private Image image;public DrawImage() {image =Toolkit.getDefaultToolkit().getImage('image.png');}public void paint(Graphics g) {g.drawImage(image, 0, 0, this);}public static void main(String[] args) {JFrame frame = new JFrame('Draw Image');frame.getContentPane().add(new DrawImage());frame.setSize(300, 300);frame.setVisible(true);}}```在上面的代码中,我们创建了一个继承自JPanel的类DrawImage,并覆盖了paint()方法,在其中调用了Graphics对象的drawImage()方法。

在main()方法中,我们创建了一个JFrame对象,并将DrawImage 对象添加到其中。

推荐两款程序员必备的画图神器

推荐两款程序员必备的画图神器

推荐两款程序员必备的画图神器算了,还是强调下吧:1、程序员不要认为写好代码就好,画好图也很重要,难道你没听过PPT架构师,PPT架构师不就天天画图么第一点就是皮一下,早日成为架构师,在也不想写代码了2、关于画画,俗话说有图有真相!哦,不,一张照片胜过千言万语。

一张图胜过千言万语,传播效率不仅仅是这很重要,不!这非常非常重要如果你在工作中没有画过画,或者没有找到合适的画图工具,看完这篇文章,建议你试着从其中一个开始你的画图表现。

是一个非常有用的自由流程图绘制工具。

你可以利用它绘制一系列的图表、图示或图形,包括流程图、UML 类图、组织结构图、泳道图、E-R 图、文氏图等等,适用于商务、工程、电气、网络设计、软件设计等诸多领域的专业绘图。

它致力于成为完全开源、免费、并且高质量的绘图软件。

软件内置了相当丰富的绘图资源,包括各类形状、图标、连接器、模板,能满足绝大大多数的绘图需求,还可以导入第三方图标资源满足更多需求,完全可以取代微软 Visio 等流程图软件。

很多介绍,感觉很高端,其实我真的用的就那么几个。

这个软件可以在线访问画图,下载安装包(绿色版)在本地打开画图也很方便。

默认版本是英语。

如果英文和我的一样,它也选择中文,可以切换,更人性化。

截几个图看看吧:“ 如果打开后是英文的话,在语言选择中文然后重新打开软件即是中文版举一个简单的流程图例子的截图。

你还不快去探索其他的用法,那你还等什么?这个画图工具也提供了window便携版,双击就可以打开使用,无需网络。

下载地址也给你安排的妥妥当当,还不给我点个赞,鼓励一下么~下载说明,最新版本v12.9.3:github下载地址:考虑到github访问有时候比较慢,还提供了蓝奏云下载蓝奏云下载Draw:ProcessOn是一个面向垂直专业领域的作图工具和社交网络,提供基于云服务的免费流程梳理,可以在线画流程图、思维导图、UI原型图、UML、网络拓扑图、组织结构图等等,您无需担心下载和更新的问题,不管Mac还是Windows,一个浏览器就可以随时随地的发挥创意,规划工作。

Java的Graphics类进行绘图的方法详解

Java的Graphics类进行绘图的方法详解

Java的Graphics类进⾏绘图的⽅法详解Graphics类提供基本绘图⽅法,Graphics2D类提供更强⼤的绘图能⼒。

Graphics类提供基本的⼏何图形绘制⽅法,主要有:画线段、画矩形、画圆、画带颜⾊的图形、画椭圆、画圆弧、画多边形等。

1. 画线在窗⼝画⼀条线段,可以使⽤Graphics类的drawLine()⽅法:drawLine(int x1,int y1,int x2,int y2) 例如,以下代码在点(3,3)与点(50,50)之间画线段,在点(100,100)处画⼀个点。

g.drawLine(3,3,50,50);//画⼀条线段g.drawLine(100,100,100,100);//画⼀个点。

2. 画矩形有两种矩形:普通型和圆⾓型。

(1) 画普通矩形有两个⽅法:drawRect(int x,int y,int width,int height):画线框围起来的矩形。

其中参数x和y指定左上⾓的位置,参数width和height是矩形的宽和⾼。

fillRect(int x,int y,int width,int height):是⽤预定的颜⾊填充⼀个矩形,得到⼀个着⾊的矩形块。

以下代码是画矩形的例⼦:g.drawRect(80,100,40,25);//画线框g.setColor(Color.yellow);g.fillRect(20,70,20,30);//画着⾊块(2)画圆⾓矩形也有两个⽅法:drawRoundRect(int x,int y,int width, int height, int arcWidth, int arcHeight):是⽤线围起来的圆⾓矩形。

其中参数x和y指定矩形左上⾓的位置;参数width和heigth是矩形的宽和⾼;arcWidth和arcHeight分别是圆⾓弧的横向直径和圆⾓弧的纵向直径。

fillRoundRect(int x,int y,int width,int height,int arcWidth,int archeight):是⽤预定的颜⾊填充的圆⾓矩形。

java createdrawingpatriarch 使用实例

java createdrawingpatriarch 使用实例

java createdrawingpatriarch 使用实例Java中的createdrawingpatriarch方法用于创建Sheet的绘图管理器,可以对Sheet进行绘图操作。

绘图管理器中可以添加图形、绘制文本、设置填充颜色等,非常灵活实用。

本文将一步一步回答“java createdrawingpatriarch 使用实例”。

第一步:了解createdrawingpatriarch方法的基本用法在开始实例之前,我们需要了解createdrawingpatriarch方法的基本用法。

该方法是在Workbook接口中定义的,用于在Sheet中创建一个绘图管理器。

绘图管理器可以通过getCreationHelper().createDrawingPatriarch()方法来获取。

接下来的实例中,我们将使用POI库来操作Excel文件,具体使用步骤如下:1. 创建一个Workbook对象:Workbook workbook = new XSSFWorkbook();2. 创建一个Sheet对象:Sheet sheet = workbook.createSheet("Sheet1");3. 获取绘图管理器对象:Drawing drawing = sheet.createDrawingPatriarch();第二步:创建简单的图形下面我们来创建一个简单的图形,以便更好地理解createdrawingpatriarch方法的使用。

我们将创建一个圆形,并设置其位置和大小,代码如下:1. 创建一个绘图对象:XSSFDrawing drawing = (XSSFDrawing)sheet.createDrawingPatriarch();2. 定义圆形的位置和大小:int x = 100; 圆心的横坐标int y = 100; 圆心的纵坐标int width = 100; 圆的宽度int height = 100; 圆的高度3. 绘制圆形:XSSFClientAnchor anchor = drawing.createAnchor(x, y, x + width, y + height, 0, 0, 0, 0);XSSFSimpleShape circle = drawing.createSimpleShape(anchor); circle.setShapeType(ShapeTypes.ELLIPSE);第三步:绘制文本除了图形,我们还可以在Sheet中绘制文本。

graphics 方法

graphics 方法

graphics 方法
Graphics 方法是 Java 中的一个绘图 API,它允许开发者使用图形字符、线条、图像等来绘制文本、图像等。

Java 中的 Graphics 方法主要源于 JavaFX 和 Java Swing,这两个框架都使用了 Graphics 方法来实现图形绘制功能。

JavaFX 是一个基于 Java 的跨平台桌面应用程序框架,它提供了丰富的图形和用户界面组件,这些组件包括按钮、文本框、标签、进度条、图片等等。

JavaFX 使用 Graphics 方法来绘制这些组件。

开发者可以使用 Graphics 对象的drawXXX 方法来绘制各种图形。

例如,使用 drawString 方法可以绘制文本。

drawString 方法接收三个参数:x 坐标、y 坐标和要绘制的字符串。

x 和 y 坐标是相对于屏幕的偏移量,字符串是绘制在屏幕上的。

Java Swing 是 Java 的一个用户界面组件库,它提供了许多用于绘制图形的组件,包括 JLabel、JButton、JPanel 等等。

Java Swing 使用 Graphics 方法来绘制这些组件。

Graphics 方法还可以用来绘制图像。

例如,可以使用 drawImage 方法将另一个图像加载到屏幕上。

drawImage 方法接收三个参数:要加载的图像、x 坐标、y 坐标和图像的宽高比。

总结起来,Graphics 方法是 Java 中用于绘制图形的重要 API,它提供了许多用于绘制文本、图像、线条等的方法,可以用于创建高质量的图形用户界面。

java createdrawingpatriarch 使用实例 -回复

java createdrawingpatriarch 使用实例 -回复

java createdrawingpatriarch 使用实例-回复Java中的createdrawingpatriarch方法是在Apache POI库中使用的一种方法,它用于创建Patriarch对象,该对象用于在Excel文档中添加绘图层。

通过创建Patriarch对象,我们可以在工作表中添加图形、形状、图片和文本框等。

本文将详细介绍java createdrawingpatriarch方法的使用实例,通过一步一步地回答以下问题:1. 什么是Apache POI库?2. 什么是Patriarch对象?3. 如何使用createdrawingpatriarch方法创建Patriarch对象?4. 怎样在已有的Excel文档中添加绘图层?1. 什么是Apache POI库?Apache POI是一种用于操作Microsoft Office文件的开源Java库。

它提供了一组API,可让我们从Java代码中读取、创建和修改Excel、Word 和PowerPoint等Office文档。

通过Apache POI库,我们可以实现对Excel文档的批处理操作,如数据的读取、写入以及对样式、图表等的编辑。

2. 什么是Patriarch对象?Patriarch对象在Apache POI库中是用于管理绘图层的对象。

绘图层允许在Excel文档的工作表中添加各种图形元素,如形状、图片和文本框等。

Patriarch对象充当了绘图层的容器,我们可以通过Patriarch对象的方法来添加、删除和修改绘图层中的对象。

3. 如何使用createdrawingpatriarch方法创建Patriarch对象?在使用Apache POI库创建Patriarch对象之前,我们需要先创建一个工作表对象,然后通过该工作表对象的createDrawingPatriarch()方法来创建Patriarch对象。

下面是一个使用实例:import ermodel.*;public class CreateDrawingExample {public static void main(String[] args) {创建工作簿和工作表对象Workbook workbook = new XSSFWorkbook();Sheet sheet = workbook.createSheet("Sheet1");创建Patriarch对象Drawing<?> drawing = sheet.createDrawingPatriarch();执行绘图操作...保存工作簿try {FileOutputStream fileOut = new FileOutputStream("sample.xlsx");workbook.write(fileOut);fileOut.close();} catch (IOException e) {e.printStackTrace();}}}在上面的代码中,我们首先创建了一个XSSFWorkbook对象作为工作簿,然后使用createSheet()方法创建了一个名为"Sheet1"的工作表。

javapaint方法

javapaint方法

javapaint方法在Java中,可以使用paint方法来实现对组件进行绘制的功能。

paint方法是Swing组件中的一个方法,用于进行组件的绘制操作。

下面将详细介绍Java的paint方法。

首先,paint方法是在组件需要被重绘时由Java虚拟机自动调用的,应用程序通常无需自己调用paint方法。

在组件首次显示时或需要进行重绘时,paint方法将自动被调用。

paint方法的方法签名如下:```public void paint(Graphics g)```paint方法的参数是一个Graphics对象,它提供了一系列的绘图方法用于完成绘制操作。

在paint方法中,通常需要完成以下几个步骤:1. 获取Graphics对象:用于绘制的Graphics对象可以通过paint方法的参数获取,此时可以使用Graphics对象的各种方法来完成绘制操作。

2. 设置绘图属性:在开始绘制之前,通常需要设置一些绘画属性,比如绘图颜色、线条粗细等。

Graphics对象提供了一系列用于设置绘画属性的方法,比如setColor、setStroke等。

3. 进行绘制操作:在绘制之前,需要确定绘制的内容和位置。

根据需要,可以使用Graphics对象的各种绘图方法,如drawLine、drawRect、fillRect等来绘制需要的图形。

4. 释放资源:绘制操作完成后,通常需要释放绘图资源,以便其他组件或画布进行绘制操作。

可以通过Graphics对象的dispose方法来释放绘图资源。

下面是一个简单的示例代码,展示了如何在一个JPanel类中使用paint方法进行绘制操作:```javaimport javax.swing.*;import java.awt.*;public class MyPanel extends JPanelpublic void paint(Graphics g)super.paint(g);//设置绘图属性g.setColor(Color.RED);//绘制操作g.drawLine(10, 10, 100, 100);g.drawRect(50, 50, 100, 100);g.fillRect(200, 200, 100, 100);//释放资源g.dispose(;}```在上面的代码中,首先继承了JPanel类,并重写了其paint方法。

java xyplot用法

java xyplot用法

java xyplot用法Java XYPlot是JFreeChart图表库中的一个重要组件,用于创建XY 坐标系图表。

在Java应用程序中,通过使用XYPlot可以实现各种各样的XY坐标系图表,如折线图、散点图、面积图等。

本文将介绍Java XYPlot的基本用法,包括创建XYPlot对象、设置坐标轴、添加数据集等操作。

1. 创建XYPlot对象要使用Java XYPlot,首先需要创建一个XYPlot对象并将其添加到JFreeChart图表中。

以下是创建XYPlot对象的基本代码示例:```javaXYPlot plot = new XYPlot();```2. 设置坐标轴在创建XYPlot对象后,需要设置XY坐标系的坐标轴,包括X轴和Y轴。

可以设置坐标轴的标题、颜色、刻度、刻度标签等属性。

以下是设置X轴和Y轴的示例代码:```javaplot.setDomainAxis(new NumberAxis("X轴"));plot.setRangeAxis(new NumberAxis("Y轴"));```3. 添加数据集在设置坐标轴后,需要向XYPlot中添加数据集,以便在图表中显示数据。

可以通过创建XYSeries对象并向其中添加数据点来实现。

以下是添加数据集的示例代码:```javaXYSeries series = new XYSeries("数据集");series.add(1.0, 1.0);series.add(2.0, 2.0);series.add(3.0, 3.0);XYDataset dataset = new XYSeriesCollection(series);plot.setDataset(dataset);```4. 设置图表样式除了设置坐标轴和添加数据集之外,还可以设置XYPlot的样式,如背景色、边框、线条颜色等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

项目效果图:项目源代码: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.filechooser.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 = 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.Float 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 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);}});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.CROSSHAIR_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_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 JMenuItem("退出"); 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.CENTER, 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("直线");buttonLine.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(buttonRect);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 actionPerformed(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 arg0) {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.addItemListener(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();frame.setVisible(true);}public static void main(String[] args){new ImageDraw().init();}class DrawPanel extends JPanel{public 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(typeFlag == 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(Color.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_OPTION){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 FileNameExtensionFilter("图片文件","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, sourceImage.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 );if(end_x <= start_x && end_y <= start_y){start_X = start_x - width;start_Y = start_y - height;}if(end_x > start_x && end_y < start_y){start_Y = start_y - height;start_X = start_x;}if(end_x <= start_x && end_y >= start_y){start_Y = start_y;start_X = start_x - width;}if(end_x >= start_x && end_y >=start_y){start_Y = start_y;start_X = start_x;}if(typeFlag == 1){if (pre_x > 0 && pre_y > 0){line = new Line2D.Float(pre_x, pre_y, end_x, end_y);g2.setColor(color);g2.setStroke(stroke);g2.draw(line);}pre_x = e.getX();pre_y = e.getY();drawArea.repaint();}else{drawArea.repaint();}}private void do_mousePressed(MouseEvent e1) {// TODO 自动生成的方法存根width = 0;height = 0;start_x = end_x = pre_x = e1.getX();start_y = end_y = pre_y = e1.getY();if(endFlag == 2){g2.draw(line);}if(endFlag == 3){g2.draw(rect);}if(endFlag == 4){g2.draw(ellipse);}drawArea.repaint();}}。

相关文档
最新文档