[vtkusers] Problems with vtkVectorText and vtkFollower in Java
Carlos Martínez Burgos
cmarbur at iti.upv.es
Wed Dec 11 08:46:28 EST 2002
Hi.
I have tried it using vtkTextActor and the text is shown. I send the code
to help others.
Thank you again.
On Wed, 11 Dec 2002, Jeff Lee wrote:
> Hi,
> I ran your code and Grid2 shows text. Grid1 shows spheres and Grid2
> shows text. I use text all the time, but have abandoned vtkTextFollower
> in favor of vtkTextActor. The examples in Wrapping/Java/AxisActor.java
> show how to do this. You could try to run TestVTKCanvas and see if you
> get text. If not, perhaps your build is corrupt.
> -Jeff
>
> Carlos Martínez Burgos wrote:
>
> >Hi again.
> >
> >I have done some code to show what I want to do? The files are attached.
> >
> >On Grid1 I show what I want to do, drawing spheres instead of text.
> >
> >On Grid2 I use the same code but drawing text instead of spheres. I can't
> >see any text on screen so I think there is a bug in the Java wrapper
> >because I can see texts in tcl examples. If you run this example and can
> >see any text please let me know.
> >
> >Does somebody tried text drawings using java wrapper?
> >
> >Thanks in advance.
> >
> >
> >On Tue, 10 Dec 2002, Jeff Lee wrote:
> >
> >
> >
> >>perhaps you could post some sample code so we can see what you are
> >>trying to do?
> >>-Jeff
> >>
> >>Carlos Martínez Burgos wrote:
> >>
> >>
> >>
> >>>Hi all.
> >>>
> >>>I try to do a grid plane using vtkPlaneSource. I have to put some legend.
> >>>At first I had tried to include a vtkCubeAxisActor2D but its behaviour is
> >>>not as I want. I want to assign a number/leter to each axis of the grid.
> >>>This shows it:
> >>>
> >>> A B C
> >>> +-+-+-+
> >>>1 | | | |
> >>> +-+-+-+
> >>>2 | | | |
> >>> +-+-+-+
> >>>3 | | | |
> >>> +-+-+-+
> >>>
> >>>I have tried to use vtkVectorText and vtkFollower but nothing is showed.
> >>>I'm using the Java wrapper. If I run the Tcl sample programs the text is
> >>>showed. Even then when I do a "zoom extent" to show all the objects on the
> >>>renderer, it seems that the actor is there because the extent is bigger
> >>>that when I don't add the actor.
> >>>
> >>>I have tried not using vtkFollower and I have got the same result.
> >>>
> >>>I have tried other text objects (vtkTextActor) and nothing changes.
> >>>
> >>>This seems there is a problem with texts in Java. Perhaps is because I use
> >>>Linux. Have you got good results in Windows?
> >>>
> >>>I wish to know if somebody is using java and has got good results showing
> >>>texts in Linux.
> >>>
> >>>Thanks.
> >>>
> >>>
>
--
----------------------------------------------------------------------
Carlos Martínez Burgos | Instituto Tecnológico de Informática
Ingeniero Informático | Universidad Politécnica de Valencia
Tlf: +34 963877237 | Camí de Vera, S/N
cmarbur at iti.upv.es | 46071 Valencia - Spain
www.iti.upv.es/~cmarbur | www.iti.upv.es
----------------------------------------------------------------------
-------------- next part --------------
import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import vtk.*;
public class Grid2 extends JPanel {
static {
System.loadLibrary("vtkHybridJava");
};
protected double x, y, z, w, h;
protected int xr, yr;
protected vtkPanel renderPane = new vtkPanel();
public Grid2() {
this(0, 0, 0, 10, 10, 10, 10);
}
public Grid2(double x, double y, double z, double w, double h, int xr, int yr) {
super();
this.x = x;
this.y = y;
this.z = z;
this.w = w;
this.h = h;
this.xr = xr;
this.yr = yr;
initGUI();
}
private void initGUI() {
addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
updateSize();
}
});
vtkRenderer renderer = renderPane.GetRenderer();
renderer.SetBackground(1, 1, 1);
vtkPlaneSource plane = new vtkPlaneSource();
plane.SetOrigin(x, y, z);
plane.SetPoint1(x + w, y, z);
plane.SetPoint2(x, y + h, z);
plane.SetXResolution(xr);
plane.SetYResolution(yr);
vtkPolyDataMapper mapper = new vtkPolyDataMapper();
mapper.SetInput(plane.GetOutput());
vtkActor actor = new vtkActor();
actor.SetMapper(mapper);
actor.GetProperty().SetRepresentationToWireframe();
actor.GetProperty().SetColor(0, 0, 0);
renderer.AddActor(actor);
for (int i = 0; i < xr; i++) {
String label = String.valueOf((char) ('A' + i));
double xt = x + (0.5 + i) * (w / xr);
double yt = y - (h / (2 * yr));
vtkTextActor textActor = new vtkTextActor();
textActor.SetInput(label);
textActor.ScaledTextOff();
textActor.GetTextProperty().SetColor(0, 0, 0);
textActor.GetTextProperty().ShadowOff();
textActor.GetPositionCoordinate().SetCoordinateSystemToWorld();
textActor.GetPositionCoordinate().SetValue(xt, yt, z);
renderer.AddActor(textActor);
}
for (int i = 0; i < yr; i++) {
String label = String.valueOf(i + 1);
double xt = x - (w / (2 * xr));
double yt = y + (0.5 + i) * (h / yr);
vtkTextActor textActor = new vtkTextActor();
textActor.SetInput(label);
textActor.ScaledTextOff();
textActor.GetTextProperty().SetColor(0, 0, 0);
textActor.GetTextProperty().ShadowOff();
textActor.GetPositionCoordinate().SetCoordinateSystemToWorld();
textActor.GetPositionCoordinate().SetValue(xt, yt, z);
renderer.AddActor(textActor);
}
add(renderPane, BorderLayout.CENTER);
}
private void updateSize() {
renderPane.setSize(getWidth(), getHeight());
}
public static void main(String[] args) {
JFrame f = new JFrame("Grid test");
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
f.getContentPane().add(new Grid2());
f.pack();
f.setVisible(true);
}
}
More information about the vtkusers
mailing list