JAVA设计画图板
来源:互联网 发布:淘宝可以使用中欣卡 编辑:程序博客网 时间:2024/06/05 07:29
刚来华信上课是七月七号,而七月一号华信的暑假夏令营就拉开了帷幕。我在华信的第一节课就接触到编写画图板,而那时画图板第一个版本在头一天已经结束,就是简单的画直线,我是从第二个版本开始的,感觉跳级了一样,哈哈。。。 第二版,就是在第一版的基础上加上画基本形状和颜色选择器的功能。第三版正在完善中。我就写一下我在编写过程中碰到的问题和其中已经解决的问题的方法
1.画矩形的时候,只能从左上方往右下方画。
原始代码为:g.drawRect(x1,y1,x2-x1,y2-y1);
要想从各个方向都能画出矩形,有三种方法,第一种画四条直线
g.drawLine(x1, y1, x2, y1);
g.drawLine(x1, y1, x1, y2);
g.drawLine(x1, y2, x2, y2);
g.drawLine(x2, y1, x2, y2);
第二种是用条件语句来判断x1,x2 y1,y2的大小来绘制矩形
if(x2>x1){
if(y2>y1)
g.drawRect(x1, y1, x2-x1, y2-y1);
else
g.drawRect(x1,y2,x2-x1,y1-y2);
}
else if(y2>y1){
g.drawRect(x2,y1,x1-x2,y2-y1);
else
g.drawRect(x2, y2, x1-x2, y1-y2);
}
第三种就是最简洁的,利用min函数和abs函数
g.drawRect(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x2-x1), Math.abs(y2-y1));
此方法同样适用于椭圆
二、没有直接画虚线框的方法,所以只能自己写算法
方法1:
//用小线段来画虚线框
if (command.equals("2")) {
int xmin = Math.min(x1, x2), a = xmin, xmax = Math.max(x1, x2), c = xmax, ymin = Math
.min(y1, y2), b = ymin, ymax = Math.max(y1, y2), d = ymax;
Graphics2D g2=(Graphics2D)g;
g2.setStroke(new BasicStroke(2));
for (int i = a; i < c; i += 8) {
g2.drawLine(xmin, b, xmin + 4, b);
g2.drawLine(xmin, d, xmin + 4, d);
xmin += 8;
}
for (int j = b; j < d; j += 8) {
g2.drawLine(a, ymin, a, ymin + 4);
g2.drawLine(c, ymin, c, ymin + 4);
ymin +=8;
}
方法2:
//用点来画虚线框
int xmin = Math.min(x1, x2), a = xmin, xmax = Math.max(x1, x2), c = xmax, ymin = Math
.min(y1, y2), b = ymin, ymax = Math.max(y1, y2), d = ymax;
for (int i = a; i < c; i += 3) {
g.drawLine(xmin, b, xmin, b);
g.drawLine(xmin, d, xmin, d);
xmin += 3;
}
for (int j = b; j < d; j += 3) {
g.drawLine(a, ymin, a, ymin);
g.drawLine(c, ymin, c, ymin);
ymin +=3;
}
三、画笔的粗细(要举一反三运用到别的功能上去)
用Graphics2D 来将Graphics 定义的画布强制转换
Graphics2D g2=(Graphics2D)g;
g2.setStroke(new BasicStroke(6));//设置画笔粗细
看不懂的可以问我
- JAVA设计画图板
- JAVA画图板
- java画图板
- JR 精品文章 - 一个Java画图板程序的设计
- Java画图板的完善
- java,制作简易画图板
- java简单画图板实现
- 画图板
- 画图板
- 画图板
- 画图板
- 画图板
- 画图板
- 画图板
- 画图板
- 使用java或C++,设计一个画图板(类似于windows系统自带的画图工具)。
- java学习——画图板
- Java 编写的简易画图板
- 使用nginx搭建前端项目web服务器以及利用反向代理调试远程后台接口
- 寒战2II 观后感
- apt-get命令的几个卸载参数
- LeetCode Medium : Search Insert Position
- SQL PROFILE手工绑定
- JAVA设计画图板
- 215. Kth Largest Element in an Array
- Android Bander设计与实现 - 设计篇
- SQLite数据库多条数据的处理
- bzoj1295(spfa+省选所需 的灵活思维)
- 服务发现系统consul-HTTP API
- iOS学习(二十六)Objective-C 分类
- c++日志库spdlog
- Sublime Text 3 快捷键汇总