package minidrawpad;

import java.awt.BasicStroke;

import

java.awt.Color;

import java.awt.Font;

import java.awt.Graphics2D;

import java.io.Serializable;

//图形绘制类 用于绘制各种图形

//父类,基本图形单元,用到串行的接口,保存使用到

//公共的属性放到超类中,子类可以避免重复定义

/*类通过实现

java.io.Serializable 接口以启用其序列化功能。

未实现此接口的类将无法使其任何状态序列化或反序列化。

可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,

仅用于标识可序列化的语义。*/

public class

Drawing implements Serializable {

int x1,x2,y1,y2; //定义坐标属性

int R,G,B; //定义色彩属性

float stroke ; //定义线条粗细的属性

int type; //定义字体属性

String s1; //定义字体的风格

String s2; //定义字体的风格

void draw(Graphics2D g2d ){}//定义绘图函数

}

class Line extends Drawing//直线类

{

void draw(Graphics2D

g2d) {

g2d.setPaint(new Color(R, G, B));// 为 Graphics2D 上下文设置 Paint

属性。

// 使用为 null 的 Paint 对象调用此方法对此 Graphics2D 的当前 Paint 属性没有任何影响。

g2d.setStroke(new BasicStroke(stroke, BasicStroke.CAP_ROUND,

BasicStroke.JOIN_BEVEL));

// setStroke(Stroke s)为 Graphics2D

上下文设置 Stroke

// BasicStroke 类定义针对图形图元轮廓呈现属性的一个基本集合

//

BasicStroke.CAP_ROUND使用半径等于画笔宽度一半的圆形装饰结束未封闭的子路径和虚线线段

//

BasicStroke.JOIN_BEVEL通过直线连接宽体轮廓的外角,将路径线段连接在一起。

g2d.drawLine(x1, y1, x2,

y2);// 画直线

}

}

class Rect extends Drawing{//矩形类

void

draw(Graphics2D g2d ){

g2d.setPaint(new Color(R,G,B));

g2d.setStroke(new BasicStroke(stroke));

g2d.drawRect(Math.min(x1,

x2), Math.min(y1, y2), Math.abs(x1-x2), Math.abs(y1-y2));

}

}

class fillRect extends Drawing{//实心矩形类

void draw(Graphics2D g2d ){

g2d.setPaint(new Color(R,G,B));

g2d.setStroke(new

BasicStroke(stroke));

g2d.fillRect(Math.min(x1, x2), Math.min(y1,

y2), Math.abs(x1-x2), Math.abs(y1-y2));

}

}

class Oval

extends Drawing{//椭圆类

void draw(Graphics2D g2d ){

g2d.setPaint(new Color(R,G,B));

g2d.setStroke(new

BasicStroke(stroke));

g2d.drawOval(Math.min(x1, x2), Math.min(y1,

y2), Math.abs(x1-x2), Math.abs(y1-y2));

}

}

class fillOval

extends Drawing{//实心椭圆类

void draw(Graphics2D g2d ){

g2d.setPaint(new Color(R,G,B));

g2d.setStroke(new

BasicStroke(stroke));

g2d.fillOval(Math.min(x1, x2), Math.min(y1,

y2), Math.abs(x1-x2), Math.abs(y1-y2));

}

}

class Circle

extends Drawing{//圆类

void draw(Graphics2D g2d ){

g2d.setPaint(new Color(R,G,B));

g2d.setStroke(new

BasicStroke(stroke));

g2d.drawOval(Math.min(x1, x2), Math.min(y1,

y2), Math.max(Math.abs(x1-x2),

Math.abs(y1-y2)),

Math.max(Math.abs(x1-x2), Math.abs(y1-y2)));

}

}

class

fillCircle extends Drawing{//实心圆类

void draw(Graphics2D g2d ){

g2d.setPaint(new Color(R,G,B));

g2d.setStroke(new

BasicStroke(stroke));

g2d.fillOval(Math.min(x1, x2), Math.min(y1,

y2), Math.max(Math.abs(x1-x2),

Math.abs(y1-y2)),

Math.max(Math.abs(x1-x2), Math.abs(y1-y2)));

}

}

class

RoundRect extends Drawing{//圆角矩形类

void draw(Graphics2D g2d ){

g2d.setPaint(new Color(R,G,B));

g2d.setStroke(new

BasicStroke(stroke));

g2d.drawRoundRect(Math.min(x1, x2),

Math.min(y1, y2),Math.abs(x1-x2), Math.abs(y1-y2),50,35);

}

}

class fillRoundRect extends Drawing{//实心圆角矩形类

void draw(Graphics2D g2d

){

g2d.setPaint(new Color(R,G,B));

g2d.setStroke(new

BasicStroke(stroke));

g2d.fillRoundRect(Math.min(x1, x2),

Math.min(y1, y2),Math.abs(x1-x2), Math.abs(y1-y2),50,35);

}

}

class Pencil extends Drawing{//随笔画类

void draw(Graphics2D g2d ){

g2d.setPaint(new Color(R,G,B));

g2d.setStroke(new

BasicStroke(stroke,BasicStroke.CAP_ROUND,BasicStroke.JOIN_BEVEL));

g2d.drawLine(x1, y1,x2, y2);

}

}

class Rubber extends

Drawing{//橡皮擦类

void draw(Graphics2D g2d ){

g2d.setPaint(new

Color(255,255,255));//白色

g2d.setStroke(new

BasicStroke(stroke+4,BasicStroke.CAP_ROUND,BasicStroke.JOIN_BEVEL));

g2d.drawLine(x1, y1,x2, y2);

}

}

class Word extends

Drawing{//输入文字类

void draw(Graphics2D g2d ){

g2d.setPaint(new

Color(R,G,B));

g2d.setFont(new

Font(s2,x2+y2,((int)stroke)*18));//设置字体

if(s1 != null)

g2d.drawString( s1, x1,y1);

}

}

原文:http://www.cnblogs.com/NetPig/p/3641992.html

java 绘图板_非常值得学习的java 绘图板源代码相关推荐

  1. java 画图板源代码_非常值得学习的java 绘图板源代码

    package minidrawpad; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; impor ...

  2. 绘画板 java_非常值得学习的java 绘图板源代码

    Java 小小绘图板,各种图形的绘制和文字的写入,也可以调整文字画笔的粗细 .还可以保存图像,非常值得学习的java 绘图板源代码下载地址: 具体下载目录在 /pub/2011/11/05/java ...

  3. Java开发2018年值得学习的10大技术

    转载自 Java开发2018年值得学习的10大技术 作为一个开发人员,我们最大的挑战就是保持自己了解新的技术.技术变化很快,你大概每两年就会看到一个新版本的编程语言和框架. 就拿2017年来说,AR. ...

  4. 开源java项目_请问有哪些开源java项目值得学习的?学习完了容易找工作的?

    Gitee 小编精选了六个 GItee 上的 GVP(Gitee Most Valuable Project) Java 开源项目,种类丰富,覆盖各行各业,希望可以帮到你:) 更多值得学习的优质开源项 ...

  5. Java程序员最值得学习的10大技术

    程序员们是最具有挑战性的工作,我们最大的挑战就是保持自己了解新的技术.技术变化很快,你大概每两年就会看到一个新版本的编程语言和框架. 就拿2017年来说,AR.VR.区块链.人工智能等等已经扑面而来了 ...

  6. 2022年有哪些值得学习的Java开源项目?这7个火爆了

    回顾2021年,开源社区有哪些火热的Java开源项目呢? 哪些值得我们在2022新的一年去参与去学习呢? 这里为大家总结了7个开源社区非常火热的Java项目,推荐给大家. 1.Java Design ...

  7. java书籍_非科班,自学java需要把软件工程的课程全部学习完吗?

    问题一:非科班是否能自学Java.问题二:自学Java是否需要把软件工程课程全部学完?问题三:如何自学Java? 解决问题一:非科班是否能自学Java.不知道你是否有这个担心疑虑,从事Java技术开发 ...

  8. 双表查询java代码_什么是JDBC?Java数据库连接性简介

    JDBC(Java数据库连接性)是Java API,用于管理与数据库的连接,发出查询和命令以及处理从数据库获得的结果集.JDBC在1997年作为JDK 1.1的一部分发布,是为Java持久层开发的首批 ...

  9. oracle java认证_如何通过Oracle的Java认证-开发人员实用指南

    oracle java认证 by javinpaul 由javinpaul 如何通过Oracle的Java认证-开发人员实用指南 (How to Pass Oracle's Java Certific ...

最新文章

  1. Nexus Repository Manager 3.0 发布
  2. 哈佛博士教你如何摆脱「尬聊」
  3. harmonyos能装app吗,真机运行HarmonyOS应用APP
  4. spring mvc DispatcherServlet详解之一---处理请求深入解析(续)
  5. 徐州技师学院计算机程序设计,徐州技师学院2021年有哪些专业
  6. 暑期应用开发怎么玩?申请蓝牙Mesh网关操控家里的一切
  7. 信息学奥赛一本通 1316:【例4.6】数的计数(Noip2001) | 1914:【01NOIP普及组】数的计数 | 洛谷 P1028 [NOIP2001 普及组] 数的计算
  8. 20145203盖泽双《网络对抗技术》拓展:注入:shellcode及return-into-libc攻击
  9. 关于游戏的C 语言的课设报告,猜单词游戏C课程设计报告.doc
  10. 神剧《切尔诺贝利》引发的技术思考:如何避免下一次核灾难?
  11. HTML+CSS技术实现网页滑动门效果
  12. 计算机文化基础实验教程第十一版课后答案,计算机文化基础实验指导及习题解答...
  13. 回文数JavaScript
  14. Foxmail登录各种邮箱方法汇总
  15. 支持向量机SVM--线性
  16. 十分钟搭建私有化人脸识别服务
  17. 换肤方案,换肤策略,App插件式换肤实现方案
  18. 一、dubbo入门与实战
  19. 上海首个电动汽车“太阳能充电桩”现身杨浦
  20. 三十二楼层选几层最好_跟大家探讨一下三十二层的楼房买几层的最好

热门文章

  1. unity 3d游戏开发_使用Unity 5开发3D游戏
  2. 漫谈程序员系列 看看你离优秀有多远
  3. 【CF1509B】TMT
  4. 为什么计算机桌面下面没有显示不出来,电脑底下一排图标没了,桌面底部任务栏不见了...
  5. 金三银四求职季,程序员面试必备——编程语言篇
  6. 【技巧】解决向日葵安装完黑屏驱动无法调整屏幕亮度
  7. 细数20世纪最伟大的10大算法
  8. 2018年终总结之最有成就感的几件事
  9. 分析如何编写一个timer程序(以blt_soft_timer为例)
  10. linux编译OCC,Linux命令 od -t oCc 选项是什么意思?