实现步骤三:绘画火柴人

@author:韩茹
版权所有:北京千锋互联科技有限公司

在此之前,我们已经实现项目的第二步,处理了每一张图的颜色,我们让小人的颜色是黑色,背景整体调整为白色。本小节要做的就是在这些图片上进行绘画火柴人。因为我们绘画水平有限,我们希望在原图片的轮廓上进行绘画。

一、swing组建

我们要想在已有的图片上进行火柴人绘画,首先得有绘画的图形界面。可以使用java中的swing组建来实现。

谈到Java的图形界面程程,指的就是GUI(图形用户界面)。Graphical User Interface,用图形的方式,来显示计算机操作的界面。

Java为GUI提供的对象都在java.awt和javax.swing两个包中。

  • java.awt,Abstract Window ToolKit(抽象窗口工具包),需要调用本地系统方法实现功能。属重量级控件。
  • javax.swing,在awt的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件。

相对于AWT而言Swing包中提供了更多的丰富的、快捷的、强大的GUI组件,而且这些组件都是java语言编写而成,因此Swing不依赖本地平台,可以真正做到跨平台运行。通常而言我们把AWT称之为重量级组件,Swing称之为轻量级软件,一般而言Swing组件都是在AWT组件名称前加J。




Javafx 绘图 java绘图程序代码_Javafx 绘图


1、JFrame 窗口

JFrame 用来设计类似于 Windows 系统中窗口形式的界面。JFrame 是 Swing 组件的顶层容器,该类继承了 AWT 的 Frame 类,支持 Swing 体系结构的高级 GUI 属性。

在Swing组件中最常见的就是JFrame,他和Frame一样是一个独立存在的顶级窗口,不能放置在其他容器中,JFrame支持所有窗口的操作,例如窗口最小化,设定窗口大小。


JFrame


示例代码:


package


运行结果如下:


Javafx 绘图 java绘图程序代码_java_02


2、JPanel 面板

JPanel 是一种中间层容器,它能容纳组件并将组件组合在一起,但它本身必须添加到其他容器中使用。JPanel 类的构造方法如下。


JPanel


示例代码:


package


运行结果如下:


Javafx 绘图 java绘图程序代码_java_03


3、其他控件

以上都用到了一些具体的,比如JButton等控件。

4、事件监听


事件监听:
    事件源:就是awt包或者swing包中的那些图形界面组件
    事件:每一个事件源都有自己特有的对应事件和共性事件。
  监听器:将可以出发某一个事件的动作都已经封装到了监听器中。
  
    以上这些,在java中都已经定义好了,直接获取对象来用就可以了。我们要做的就是,对产生的动作进行处理


Interface MouseListener


void


Interface MouseMotionListener,鼠标动作监听


void


示例代码:


package


运行结果:

每当鼠标点击一次,count的值就累加1。


Javafx 绘图 java绘图程序代码_java_04


二、项目中的绘图界面

好了,通过以上的学习,我们已经大致掌握了如果使用java的swing界面,来创建图解界面程序,我们需要创建出以下的程序界面,并且能够通过事件监听,实现绘画功能。


Javafx 绘图 java绘图程序代码_Swing_05


好了,接下来我们实现项目的第三步代码,新建一个java文件,D3_DrawPic.java,示例代码如下:


package


运行结果如下:


Javafx 绘图 java绘图程序代码_Javafx 绘图_06


三、绘画每一张图片

上面的程序运行起来,就可以进行每一张图片的绘画了。


Javafx 绘图 java绘图程序代码_java关闭窗口代码_07

Java实现手绘火柴人https://www.zhihu.com/video/1222553518441472000

我们需要将C:Ruby萨日朗换色,目录下的所有图片,一张一张绘画,保存到指定的C:Ruby萨日朗绘图,这个目录下。


Javafx 绘图 java绘图程序代码_java_08


最后