java 2d划线 刷子_月光软件站 - 编程文档 - Java - Java图形设计中,利用Bresenham算法实现直线线型,线宽的控制(NO 2D GRAPHICS)...
Java 2D Graphics提供了强大的画线功能,可以控制线型,线宽,刷子的形状等,但在JDK1.2以前,没有提供这样一个功能,为了保持与旧版JDK的相容,实现一个可控制线型,线宽的画直线方法还是有必要的,下面是我写的一个静态方法,可直接用来画各种类型的直线:
/**
* Bresenham Line Algorithm
* @author Turbo Chen
* @version 1.0 copyright 2001
* @email turbochen@163.com
* @param dashedMask 设置线型的虚线的间隔,为0则画实线。
* @param lineWidth 设置线宽。
* @param x1
* @param y1
* @param x2
* @param y2
*/
public static void bresenhamLine(java.awt.Graphics g, int dashedMask, int lineWidth, int x1, int y1, int x2, int y2)
{
int x, y;
int dx, dy;
int incx, incy;
int balance;
int i=0;
if (x2 >= x1)
{
dx = x2 - x1;
incx = 1;
}
else
{
dx = x1 - x2;
incx = -1;
}
if (y2 >= y1)
{
dy = y2 - y1;
incy = 1;
}
else
{
dy = y1 - y2;
incy = -1;
}
x = x1;
y = y1;
if (dx >= dy)
{
dy <<= 1;
balance = dy - dx;
dx <<= 1;
while (x != x2)
{
if ( (i & dashedMask)==0 )
g.fillOval(x, y,lineWidth,lineWidth);
if (balance >= 0)
{
y += incy;
balance -= dx;
}
balance += dy;
x += incx;
i ++;
}
if ( (i & dashedMask)==0 )
g.fillOval(x, y,lineWidth,lineWidth);
}
else
{
dx <<= 1;
balance = dx - dy;
dy <<= 1;
while (y != y2)
{
if ( (i & dashedMask)==0 )
g.fillOval(x, y,lineWidth,lineWidth);
if (balance >= 0)
{
x += incx;
balance -= dy;
}
balance += dx;
y += incy;
i ++;
}
if ( (i & dashedMask)==0 )
g.fillOval(x, y,lineWidth,lineWidth);
}
}
大家注意看程序中的g.fillOval()方法,也就是说我是用画圆点的方式来画线的,即刷子的样式是圆头型,你可以很容易的改变成g.fillRect()等其它方式,来实现刷子样式的设置.
java 2d划线 刷子_月光软件站 - 编程文档 - Java - Java图形设计中,利用Bresenham算法实现直线线型,线宽的控制(NO 2D GRAPHICS)...相关推荐
- java写足球游戏_月光软件站 - 编程文档 - Java - 足球战术之flyweight篇
接上回: 这个是球队的基本建设,为了组建好一支国家队, 而国内有成千上万的优秀队员,而每个人的特性 都不同,要使他们组建成一支11个人的优秀球队, 必须按照442的阵形严格区分每个队员的分工,如 前腰 ...
- java项目连接jboss中数据库_月光软件站 - 编程文档 - Java - JBOSS3.2.5中MYSQL数据库连接池的建立与测试...
数据库连接池的配置参照 samlei 的文档<切换JBOSS默认数据库到MySQL> http://dev.csdn.net/develop/article/33/33406.shtm ...
- java ejb3开发_月光软件站 - 编程文档 - Java - 使用EJB3.O简化EJB开发(三)
简化持久化容器管理 CMP实体bean将成为EJB3.0使得开发人员强制使用的一个主要的检查方式.持久化框架象如开源的已经成为不像实体bean本质上的复杂和重量级的开发J2EE持久化框架应用的被大家喜 ...
- java语句电脑定时关机_月光软件站 - 编程文档 - Java - windows定时关机程序
应网友yangxjn需要写的一个windows定时关机程序 . /** * Created by IntelliJ IDEA. * autor:cofbean * Date: 2004-3-10 * ...
- java最大质数_月光软件站 - 编程文档 - Java - 给一个数,返回比它小的最大质数...
给一个数,返回比它小的最大质数 今天,有个朋友说他们Java老师布置了一道题,要求写一个java程序, 已知一个数,然后给出比这个数小的最大质数. 起初给他写了这个asp的程序,希望他自己动手做出ja ...
- java创建多级xml树_月光软件站 - 编程文档 - Java - 用XSL与XML实现多级树形菜单
XSL语言功能强大而奇妙.从前面的例子中,我们可以初步了解到,一个xsl文档中使用了很多类似"xsl:xxxxx"这样的标签,这些标签就是xsl语言的部分.一个xsl文档至少是由一 ...
- java 数据库工厂_月光软件站 - 编程文档 - Java - 简单的数据库连接工厂实现
我看过很多数据库连接的代码,大部分都存在问题,有的甚至完全不可用,这里给出一个数据库连接工厂,给出了jdbc1和jdbc2的实现,仅供参考! public class ConnectionFactor ...
- Java写入磁盘阵列_月光软件站 - 编程文档 - Java - 利用Linux创建磁盘阵列
磁盘阵列配置文件为/etc/raidtab raiddev /dev/md0 //指定磁盘阵列的设备名称 raid-level linear //指定采用的是Linear模式 nr-raid-disk ...
- mysql的结构化编程_月光软件站 - 编程文档 - 其他语言 - 结构化子查询:在mysql4.1中的应用...
By Trudy Pelzer 翻译:guipei 随着mysql 4.1版的发布,现在有两种方法可以使用一个单独的查询从多个数据表中取得数据:使用连接(join)或者使用子查询(subquery). ...
最新文章
- VC++ .NET 2003学习
- kattle的java安装,Kettle自定义JDK版本(附Linux下安装部署步骤)
- 如何把文件压缩变成一张图片?
- 【Modern OpenGL】第一个三角形
- 【转】Ubuntu Desktop下自动启动终端并运行脚本
- 牛客网---Java题库(21~30)
- 贾跃亭的惩罚来了!就这??
- 吴恩达深度学习4.1笔记_Convolutional Neural Networks_卷积神经网络基础
- 贺利坚老师汇编课程34笔记:SI和DI复制字符串
- OFFICE2003的自动保存功能。
- 《OpenCV 4.5计算机视觉开发实战(基于VC++)》示例代码免费下载
- 计算机网络课设中:cisco关于nat的静态配置
- php用户登录界面代码有背景,HTML和CSS实现动态背景登录页面
- 【信息系统项目管理师】2018下半年系统集成项目管理工程师案例分析
- android自定义大转盘,Android使用surfaceView自定义抽奖大转盘
- 禅道项目管理软件测试功能模块,禅道使用分享:禅道用例管理流程
- 第三章直接耦合多级放大电路
- 如何在Ubuntu上使用Canonical的Livepatch服务
- vscode打开项目从中文界面变成英文界面的问题
- ArcGis二次开发ArcEngine开篇
热门文章
- php 后端 轻量 框架,GitHub - 22cloud/mixphp: 轻量 PHP 框架,基于 Swoole 的常驻内存型 PHP 高性能框架 (开发文档完善)...
- QT中的滚动条QScrollArea
- Material Design入门
- C++学习之路 | PTA乙级—— 1082 射击比赛 (20 分)(精简)
- oracle 并行执行脚本,批量执行Oracle脚本
- h5大转盘 php,HTML5 canvas实现中奖转盘的实例代码
- dmp只导数据不导结构_今日头条快消食品推广CVR为何高达4.40%?原来DMP定向这么好...
- java框架谁搭建_从零开始搭建一个开发框架(Java + Hibernate + Spring + Oracle)
- 机器人的自述作文_机器人的自述作文600字
- c 程序中的注释相当于空白字符_Python专题 | (三)注释、变量与输出