求教虚线 的绘制方法(20)
请教虚线的绘制,除了画一大堆线段外有没有更高效的方法? 问题点数:20、回复次数:8Top
1 楼kypfos(不在寻梦)回复于 2003-11-04 12:28:28 得分 5
用java2D,Graphics2D;
BasicStroke b = new BasicStroke(1.0f, BasicStroke.CAP_BUTT,
BasicStroke.JOIN_MITER, 10.0f, dash, 0.0f);
g2.setStroke(b);
g2.drawLine(20, y, w-20, y);Top
2 楼kinzey34(无声之舞)回复于 2003-11-04 12:46:09 得分 5
你可以自己定义一个绘制虚线的方法
比如如下的drawNewLine()
import java.awt.*;
import javax.swing.*;
public class DrawLine extends JApplet
{
public void init(){}
public void paint(Graphics g)
{
g.setColor(Color.BLACK);
g.drawLine(100,100,300,100);
drawNewLine(100,120,300,120,2,2,g);
drawNewLine(100,140,300,140,5,2,g);
drawNewLine(100,160,300,160,5,5,g);
drawNewLine(100,180,300,180,2,5,g);
drawNewLine(100,200,300,200,20,2,g);
}
//绘制虚线
public void drawNewLine(int x,int y,int ex,int ey,
int seeWidth,int emptyWidth,Graphics g)
{
g.drawLine(x,y,ex,ey);
g.setColor(Color.WHITE);
for(int dx=x+seeWidth;dx<ex;dx+=seeWidth+emptyWidth)
g.drawLine(dx,y,dx+emptyWidth,y);
g.setColor(Color.BLACK);
}
}
你做个HTML把这个APPLET嵌入看看
当然我做的是只可以绘制水平方向的虚线,你也可以做个全功能的,然后一劳永逸Top
3 楼d992901(沉思)回复于 2003-11-04 12:54:44 得分 5
graphics2d g2d;
float TypeArray[] = {3,2,1}
stroke = new BasicStroke(1 , 1 , 1 , 1 , TypeArray , 1) ;
g2d.setStroke(stroke) ;
tyepeArray的意思是画一条虚线格式是 3, 2,1,3代表三个像素,2代表2个
按这个例子画出来的样子是
--- -- - --- -- - 。。。。。
Top
4 楼oneonone()回复于 2003-11-04 13:00:06 得分 0
可是这样的话不如调用库函数执行效率高啊。Top
5 楼d992901(沉思)回复于 2003-11-04 13:04:24 得分 2
库里好像就这一种方法把,我就只知道这一种了 :(
自己写的函数,不一定有这效率高呢,好像挺麻烦的Top
6 楼oneonone()回复于 2003-11-04 13:30:02 得分 0
对不起,我是说kinzey34(无声之舞) 的方法可能效率不太高,但是还是要谢谢你们大家!!
:)问题终于解决了.Top
7 楼kinzey34(无声之舞)回复于 2003-11-04 13:39:36 得分 3
楼主,我的小程序是画了1条实线和5条不同的虚线Top
8 楼oneonone()回复于 2003-11-04 16:59:09 得分 0
to:kinzey34(无声之舞)
衷心地感谢你的帮助,循环调用drawLine函数的方法,在每次调用时都会产生时间消耗,我想毕竟不如Java自己的库函数只调用五次(1条实线和5条不同的虚线)效率高些.Top




