日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java 2d划线 刷子_月光软件站 - 编程文档 - Java - Java图形设计中,利用Bresenham算法实现直线线型,线宽的控制(NO 2D GRAPHICS)...

發布時間:2024/7/23 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。