画图板中的画图工具的使用

重绘指的是,将画出来的图形进行保存,重绘分为三种:记坐标,记点,记步骤。

我们在此主要讲习记坐标的方法;

如果我们想要画出一个直线,最主要的是要记录它的两个坐标,所以我们应该建立一个数组来记录,这两个坐标。

代码如下:

public class Shape {

int x1,y1,x2,y2;

String name;

Color color;

public Shape(int x1, int y1, int x2, int y2) {

this.x1 = x1;

this.y1 = y1;

this.x2 = x2;

this.y2 = y2;

}

}

//这里就需要重新建一个类来保存坐标。这一步应该为第一步,应首先建立一个类

public class DrawFrame extends JPanel {

Shape[] shape = new Shape[20];

//这里建立一个shape数组;同时extends为的是要重写那个JPanel中的方法;

// 设计左侧的布局

// JPanel jp2 = new JPanel();

this.setPreferredSize(new Dimension(850, 700));

this.setBackground(Color.WHITE);

jf.add(this);

/***********/

this.addMouseListener(lg);

this.addMouseMotionListener(lg);

这里的this指的是我们的面板,我们在重写方法的时候要吧画图的那个JPanel来用this的方法使用。

public void paint(Graphics g) {

super.paint(g);

for (int i = 0; i < shape.length; i++) {

if (shape[i] != null) {

if ("直线".equals(shape[i].name)) {

g.setColor(shape[i].color);

g.drawLine(shape[i].x1, shape[i].y1, shape[i].x2,

shape[i].y2);

}

if ("圆形".equals(shape[i].name)) {

g.setColor(shape[i].color);

g.drawOval(Math.min(shape[i].x1, shape[i].x2), Math.min(shape[i].y1, shape[i].y2), Math.abs(shape[i].x1 - shape[i].x2),

Math.abs(shape[i].y1 - shape[i].y2));

}

if ("正方形".equals(shape[i].name)) {

g.setColor(shape[i].color);

g.drawRect(Math.min(shape[i].x1,shape[i].x2), Math.min(shape[i].y1, shape[i].y2), Math.abs(shape[i].x1 - shape[i].x2),

Math.abs(shape[i].y1 - shape[i].y2));

}

}

}

}

//这里的是最重要的一步重写,是重写JPanel中的方法,paint方法是在JPanel中自动调用的。所以不用刻意添加。

private Shape[] shape;

private int index;

public void setShape(Shape[] shape) {

this.shape = shape;

}

//这里就是在监听类中添加方法,这里是将shape传到监听机制的类中。

Shape line = new Shape(x1, y1, x4, y4);

line.name = "直线";

line.color = co;

shape[index] = line;

index++;

//接着就是在每一个方法中添加那个数组来保存坐标。

这样重写就完成了,谢谢!

时间: 2024-10-03 16:46:38

画图板中的画图工具的使用的相关文章

Linux基础※※※※Linux中的画图工具

kolourPaint类似于Win中个mspaint Ubuntu安装:sudo apt-get install kolourpaint4 图1 kolourPaint界面

JAVA 仿XP画图板的总结

仿XP画图板是我接触JAVA以来的第二个项目.总得来说是比较成功的,不足是还有一些功能没有实现,之后有时间会慢慢完善. 话不多说,先上成果图(源码在最下面会附上链接): 可以看到,做的画图板已经实现了直线,矩形,椭圆,圆角矩形,多边形,刷子,喷漆,橡皮等基本功能,28种颜色可供选择.上方的菜单栏功能还没有开发~~ 如何做到这一个画图板呢?接下来是我画图板的制作过程: 1 . 画图板界面框架 我将整个框架分为五个部位,主界面面板,菜单栏部位,画图板面板,工具栏面板,颜色选择面板: 主界面:先实例化

Java版简易画图板的实现

Windows的画图板相信很多人都用过,这次我们就来讲讲Java版本的简易画板的实现. 基本的思路是这样的:画板实现大致分三部分:一是画板界面的实现,二是画板的监听以及画图的实现,三是画板的重绘.(文章较长,但是代码是逐步递进的,可以按三部分分开来看,实现了当前部分再去看下一部分.)首先是画板的界面实现,因为我没有去找具体的图标,界面上的所有组件都是Swing的自带组件,所以界面略微有点简陋,不过如果想要优化也简单,把界面上的组件都改成自定义的图标即可.界面实现后,就可以考虑给界面的组件加上监听

JAVA 画图板实现(基本画图功能+界面UI)一、界面实现

/*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 [email protected]*/ 这段时间在学JAVA的swing界面开发,试着做了个画图板.实现了直线.曲线.喷枪.矩形.圆形.文字.橡皮等操作,感觉收获很大. 既然要做画图板,那最好的参考当然是windows系统自带的画图啦!虽然技术有限不能做的一模一样,但感觉还是能看(手动滑稽).下面就讲讲如何实现了. 首先不用想,肯定是先把界面做好了(这是我做的界面,emmmmmm....功能和界面都还有待完善) 仔细看一看大概就能想到怎

在线画图工具绘制流程图怎样画

现在有很多可以在线画图的网站.软件得到了很多人的青睐,并且这些在线画图工具给用户的体验度以及绘制时的感觉都是极佳的一致获得好评,那利用在线画图工具绘制流程图怎样画呢?下面分享的在迅捷画图中绘制流程图的操作方法介绍,希望可以给大家带来帮助. 绘制流程图的注意事项: 1.不同的流程图图形所代表的含义不同,我们可以根据流程图图形准则对流程图进行熟悉. 2.在对框架结构搭建中我们要根据事情的走向对其进行绘制. 绘制流程图方法: 1.首先要进入到该绘制网站中,在新建文件夹中选择流程图进行新建使用,首先要点

为什么要用画图工具来画原型?

产品经理每天接触到的工具是在是太多了,平时要接触到的原型图也是各式各样的.不过熊先生最近发现很多同学在用画图工具来画原型,这样确实可以,但是,真的合适么? 首先我们来看现在比较常见的几种画图工具: 1. PS 2. Sketch 3. Fireworks 4. OmniGraffle 每个工具的使用都有其对应的场景,简单的说,就是这些工具的设计者和开发者希望他们的工具是做什么用的. PS:Image editing and compositing. (图像编辑和创作) Sketch:Profes

Swift-贝赛尔曲线实现画图板 &amp;&amp; 截图保存到相册中

本文内容参考自 传送门.原文是用 OC 写的,我把它改成了 Swift 的. 我们先来看看效果图: 第一幅图是我们画了一个 "iOS" 的图像,第二幅图是我们点击保存成功,第三幅图是可以在相册中看到我们刚才画的图. 感觉很不错有木有?接下来我们就来说说是怎么实现的. 我们分两部分来说:上半部分的画图板和下半部分的控制区. 上半部分的画图板是我们自定义的 view,我们设置如下属性: class MyView: UIView { var color = UIColor.redColor(

canvas实现简单的画图工具中画笔效果

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>canvas实现简单的画图工具中画笔效果</title> </head> <body> <canvas width="500" height="500" style="backg

很值得学习的java 画图板源码

很值得学习的java 画图板源码下载地址:http://download.csdn.net/source/2371150 package minidrawpad; import java.awt.*; import java.awt.event.*; import java.io.InputStreamReader; import java.io.Reader; import javax.swing.*; // 主界面类 public class DrawPad extends JFrame i