我想画一条厚度为j2me的线。通过将Pen width设置为厚度值,可以在桌面java中轻松实现。但是在j2me中,Pen类不支持宽度。我的想法是从我拥有的线生成一个多边形,类似于我想要绘制的厚度线。在图片中,左边是我所拥有的,带有点的线。在右边是我想要的,一个多边形,当填充时,一条线有厚度。谁能知道如何从线生成多边形?
alt text http://www.freeimagehosting.net/uploads/140e43c2d2.gif
答案 0 :(得分:4)
啊,如果你正在进行预处理,这会让你的生活变得更轻松。这是我使用Graphics2D(使用J2SE)编写的一些代码。我不喜欢输出包含额外的内部部分,但是当它填满时,它看起来很不错。
import java.awt.BasicStroke;
import java.awt.Shape;
import java.awt.geom.Path2D;
import java.awt.geom.PathIterator;
public class StrokePath
{
public static void main(String[] args)
{
// set line width to 6, use bevel for line joins
BasicStroke bs = new BasicStroke(6.0f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_BEVEL);
// create a path for the input
Path2D p = new Path2D.Float();
p.moveTo(50.0, 50.0);
p.lineTo(65.0, 100.0);
p.lineTo(70.0, 60.0);
p.lineTo(120.0, 65.0);
p.lineTo(40.0, 200.0);
// create outline of wide lines by stroking the path with the stroke
Shape s = bs.createStrokedShape(p);
// output each of the segments of the stroked path for the output polygon
PathIterator pi = s.getPathIterator(null);
while (!pi.isDone())
{
pi.next();
double[] coords = new double[6];
int type = pi.currentSegment(coords);
switch (type)
{
case PathIterator.SEG_LINETO:
System.out.println(String.format("SEG_LINETO %f,%f", coords[0], coords[1]));
break;
case PathIterator.SEG_CLOSE:
System.out.println("SEG_CLOSE");
break;
case PathIterator.SEG_MOVETO:
System.out.println(String.format("SEG_MOVETO %f,%f", coords[0], coords[1]));
break;
default:
System.out.println("*** More complicated than LINETO... Maybe should use FlatteningPathIterator? ***");
break;
}
}
}
}
以下是渲染这些坐标后的结果:
答案 1 :(得分:0)
这将画一条线:
Graphics g = this.CreateGraphics();
Pen pen = new Pen(Color.Black, 2); //black Width 2
pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
g.DrawLine(pen, point1, point2); //point1 and point2 are instances of Point class
所以我想如果你有一系列积分你可以做点什么
for(int i=0;i<myPoints.Length-1;i++)
g.DrawLine(pen,myPoints[i],myPoints[i+1]);
问题不是很清楚......希望这有帮助
答案 2 :(得分:0)
我想我会在线旁边绘制平行线并将它们连接成多边形。比填。绘制平行线Draw a parallel line。
答案 3 :(得分:0)
不幸的是,这方面的一般算法非常复杂,如果您正在绘制地图,您可能需要通用算法...... TinyLine库看起来很有前途,如果您可以花钱,请参阅,例如:
http://www.tinyline.com/2d/download/guide/gstate.html#joinStyle
有可能,这将有助于您在绘制地图时想要做的其他事情。
我没有使用过这个库(或坦白地做过任何J2ME编程),但是如果它做了它声称的那样,它似乎值得花钱。