Russel,
>From what I remember about the dash patterns, you can't specify
patterns that are shorter than the width of the stroke. So, imagine you
can't do something that would generate a bar-code using this method,
but you can do a dashed outline pretty easily. I'm not sure if this has
changed in the last couple of years.
Why don't you try working with a smaller stroke to see if you get
better results. You might need to just render two narower dashed lines
side-by-side to get the same effect.
David
Thus Spoke Russell East:
Hi,
the attached sample app uses Java2D dash pattern to try to create a
railway pattern, but the result isn't very good.
The code is specifying the dash array as { 4.0f, 4.0f } but I'm seeing
variable results:
o on the top line it seems more like {5, 3}
o on the left line seems more like { 6, 2, 5, 3 } and
o on the bottom line does not look dashed at all
Is it something I'm doing wrong in my code, or known problem?
-- Russell
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the
body
of the message "signoff JAVA2D-INTEREST". For general help, send email
to
[EMAIL PROTECTED] and include in the body of the message "help".
/*
* Copyright (C) 1999 - 2006 by Environmental Systems Research Institute Inc.
* All Rights Reserved.
*
* N O T I C E
*
* THIS MATERIAL IS CONSIDERED A TRADE SECRET BY ESRI.
* UNAUTHORIZED ACCESS IS PROHIBITED.
*
* $Workfile:$ $Revision:$
*/
package com.esri.mc.app;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.GeneralPath;
/**
* dash lines look wrong
*/
public class RailwayLines extends JFrame {
public static void main(String[] args) {
new RailwayLines().setVisible(true);
}
public RailwayLines() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(200, 200, 500, 300);
String text = System.getProperty("java.vm.version");
this.setTitle(text);
MyCanvas canvas = new MyCanvas();
this.getContentPane().add(canvas);
}
}
final class MyCanvas extends JComponent {
private Stroke topStroke, backStroke;
private Color topColor, backColor;
private GeneralPath path;
MyCanvas() {
topStroke = constructTopStroke();
backStroke = constructBackStroke();
topColor = Color.WHITE;
backColor = new Color(102, 102, 102);
path = constructPath();
}
private GeneralPath constructPath() {
GeneralPath path = new GeneralPath();
path.moveTo(100.0f, 100.0f);
path.lineTo(200.0f, 200.0f);
path.lineTo(400.0f, 200.0f);
path.lineTo(400.0f, 100.0f);
path.closePath();
return path;
}
private Stroke constructBackStroke() {
float width = 4.0f;
int cap = BasicStroke.CAP_ROUND;
int join = BasicStroke.JOIN_ROUND;
return new BasicStroke(width, cap, join);
}
private Stroke constructTopStroke() {
float width = 2.0f;
int cap = BasicStroke.CAP_ROUND;
int join = BasicStroke.JOIN_ROUND;
float miterLimit = 10.f;
float[] dash = { 4.0f, 4.0f };
float dashPhase = 0.0f;
return new BasicStroke(width, cap, join, miterLimit, dash, dashPhase);
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setColor(backColor);
g2.setStroke(backStroke);
g2.draw(path);
g2.setColor(topColor);
g2.setStroke(topStroke);
g2.draw(path);
}
}
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA2D-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".
|