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()等其它方式,来实现刷子样式的设置.

down_info.asp?id=8287

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505780.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python socketserver最大连接_大聊Python----SocketServer

什么是SocketServer&#xff1f;SocketServer的最主要的作用是实现并发处理,也就是可以多个用户同时上传和下载文件。socketserver模块简化了编写网络服务器的任务。socketserver一共有这么几种类型class socketserver.TCPServer(server_address, RequestHandlerClass, bind_an…

java 位运算符在实际开发中的用处_java 位运算 和实际应用

public class Test {public static void main(String[] args) {// 1、左移( <// 0000 0000 0000 0000 0000 0000 0000 0101 然后左移2位后&#xff0c;低位补0&#xff1a;//// 0000 0000 0000 0000 0000 0000 0001 0100 换算成10进制为20System.out.println(5 <// 2、右…

python django开发工具_利用pyCharm编辑器创建Django项目开发环境-python开发工具第一篇...

【前置说明】1、django环境与python对应关系&#xff1a;Django versionPython versions1.112.7, 3.4, 3.5, 3.6, 3.7 (added in 1.11.17)2.03.4, 3.5, 3.6, 3.72.13.5, 3.6, 3.72.23.5, 3.6, 3.7, 3.8 (added in 2.2.8)3.03.6, 3.7, 3.8【正式进入部署开发环境之pyCharm】安装…

mock教程 java_java代码实现mock数据

废话不多说&#xff0c;直接上代码。1 /** 2 * 发get请求&#xff0c;获取文本 3 * 4 * param getUrl 5 * return 网页context 6 */ 7 public static String sendGetRequest(String getUrl) { 8 String result null; 9 CloseableHttpClient httpClient HttpClients.createDef…

system流怎么判断为空_并行流ParallelStream中隐藏的陷阱

点击上方蓝字 ↑↑ Throwable文摘关注公众号设置星标&#xff0c;不定时推送高质量原创文章关注前提这篇文章介绍一下日常开发中并行流ParallelStream中隐藏的陷阱&#xff0c;这个问题其实离我们很近&#xff0c;特别是喜欢使用JDK1.8的流式编程的伙伴&#xff0c;应该会深有感…

python脚本怎么打印日志_python 接口测试1 --如何创建和打印日志文件

python自带的logging实在是不好用&#xff0c;推荐使用logbook思路如下&#xff1a;1.创建path.py文件&#xff0c;获取工程根路径2.创建log.py文件&#xff0c;在工程根路径下创建日志文件(文件名称按日期命名)&#xff0c;并设置log输出等级3.执行测试用例&#xff0c;调用lo…

吸血鬼 java_吸血鬼数

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼代码:/** * 功能:找出四位数中由二位数相乘得出的吸血鬼数 * author wiley */public class Vampire { public static void main(String[] arg){ String[] ar_str1,ar_str2; int sum0; //双重循环穷举 for(int i10;i<100;i){ //j…

vfp操作excel排序_中招计算机信息技术考试训练|Excel操作题一|排序和筛选

Excel操作题&#xff08;一&#xff09;&#xff1a;进入本题工作目录&#xff0c;请完成以下操作。1、将单元格区域A1:F1合并后居中&#xff0c;字体格式设置为黑体、16号。2、将单元格区域A2:F2填充颜色改为橙色&#xff0c;A3:A7填充颜色改为黄色。3、用函数计算5个储蓄所的…

java 反射机制 视频_【视频笔记】Java反射机制笔记

Java 语言的反射机制在Java运行时环境中&#xff0c;对于任意一个类&#xff0c;可以知道这个类有哪些属性和方法。对于任意一个对象&#xff0c;可以调用它的任意一个方法。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射(Reflection)机制。Java 反射…

算术溢出使用4字节值上的运算符_c语言程序设计的数据类型、运算符和表达式介绍...

数据类型 为什么在用计算机运算时,要指定数据的类型呢?在数学中,数值是不分类型的,数值的运算是绝对准确的,例如:1/3的值是0.333333(循环小数)。 而在计算机中,数据是存放在存储单元中的,它是具体存在的。而且,存储单元是由有限的字节构成的,每一个存储单元中存放数据…

java windows 下载_Windows环境下JDK的下载与安装

1.首先检查一下本机是否有安装java。按winR&#xff0c;在弹出窗口中输入cmd&#xff0c;按回车打开控制台在控制台中输入 java 并按回车&#xff0c;如果显示“java 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件“&#xff0c;则说明这台电脑还没安装java可…

net应用程序中发生了未经处理的异常怎么办_介绍一些在.NET Core 3.0中引入的诊断改进工具...

编者按&#xff1a;即使.NET Core3.1.5已经发布&#xff0c;在进行.NET Core的性能诊断时&#xff0c;我们有时依然不知该从何处下手&#xff0c;那这篇介绍.NET Core3.0中引入的诊断工具&#xff0c;或许能为我们提供参考。在.NET Core 3.0中&#xff0c;我们引入了一套工具&a…

python pptp链接_pptp-client连接设置

一、安装软件包yum -y install pptpyum -y install pptp-setup二、使用pptpsetup命令直接拨号&#xff0c;可直接生成配置文件。pptpsetup --create NAME --server ADDRESS --username DOMAIN\\USER --password PWD --encrypt –start#--encrypt&#xff1a;支持加密&#xff0…

python选择框格式_PyQt组合框选择性文本格式

圣诞快乐伙计们&#xff01;在我不熟悉PyQt4编程&#xff0c;并且在大多数UI开发中使用Qt设计器。不过&#xff0c;我有一个特定的需求&#xff0c;需要通过Python代码填充QComboBox。另外&#xff0c;我想更改一些条目的文本格式(粗体&#xff0c;红色背景色)。在基本上&#…

python 整数输出 d f_pythn print格式化输出---------%s 和 % d 都是什么意思?

pythn print格式化输出。%r 用来做 debug 比较好&#xff0c;因为它会显示变量的原始数据(raw data)&#xff0c;而其它的符号则是用来向用户显示输出的。1. 打印字符串print ("His name is %s"%("Aviad"))效果&#xff1a;2.打印整数print ("He is %…

c语言memcopy_用C语言模拟实现memcpy函数,memmove函数和memset函数

模拟实现memcpy函数&#xff1a;函数原型&#xff1a;void *memcpy (void *p,void *m, size_t num);memcpy与strcpy相比&#xff0c;memcpy函数用来做内存拷贝&#xff0c;可以用它拷贝任何数据类型的对象&#xff0c;并且可以指定拷贝的数据长度。stycpy函数也是用来做内存拷贝…

python中oxf2是什么_0x02-StartingPoint-Oopsie

Help Desk经过第一篇文章&#xff0c;我思考了一下&#xff0c;已经存在太多的 walkthrough&#xff0c;不应该再去写一样的文章&#xff0c;而是应该着重写思路。接下来的文章&#xff0c;会着重写在什么情况下&#xff0c;应该做些什么&#xff0c;应该注意哪些信息&#xff…

java jlist checkbox_JCheckBox检查Java中的JList中的切换逻辑时遇到问题

如果我理解这个问题......import java.awt.*;import java.awt.event.*;import javax.swing.*;public class JListToggleLogicTest {private final ClearSelectionListener listener new ClearSelectionListener();public JComponent makeUI() {JList list new JList(makeMode…

java yaml dump方法_yamlyaml.load与yaml.dump方法

yaml.load与yaml.dump方法该模块提供了一些方法&#xff0c;不过常用的方法只有两个yaml.load和yaml.dump &#xff0c;以下是一个版本相关的yaml 格式文件[root361way yaml]# cat tree.yamltreeroot:branch1:name: Node 1branch1-1:name: Node 1-1branch2:name: Node 2branch2…

vba中有多线程吗_VBA会被Python代替吗?

先说答案&#xff1a;不会被替代这里引用轮子哥的话说&#xff1a;微软只会开发更多的增强型插件来慢慢淡化VBA&#xff0c;但是不会用其他语言取代VBA。早在17年底&#xff0c;就有风声说Python要取代VBA&#xff0c;成为Excel官方脚本语言。我认真翻看了下好多篇文章&#xf…