Fw: [vtkusers] vtkActor2D ignores SetPosition2() methods
Isidro Moreno
morenoisidro at yahoo.com.ar
Wed Jun 27 11:02:28 EDT 2007
OK, let's see; as you must have seen the code below, it consist of drawing a
diagonal line. Width a Height are the dimensions the rectangle in which this
line is defined in. Using these two methods is the same as doing
vtkActor2D->GetPosition2Coordinate->SetValue(x,y) (where x=width &
y=height - see HTML help of vtkActor2D) as I've explained below. The
pourpose of all these is to autoscale any figure in the plane when the
window's size changes (not just a line but also a polygon, rectangle, etc).
In fact, I've used this code to draw a period of the sinus function and it
was fine! But I can't make it fit my window. It put a simple line in the
code below to make the things easier to understand, but you're the second
who asks me the same question. Should I be more clear and put the actual
code? Sorry for my english, I'm spanish speaker.
I know I can do this with actor 3D, but I think It's not good using it
in terms of design since I'm working in the plane and many unused memory
would be kept in if I use actor3D.
> Isidro,
>
> Could you be a bit more clear about what you want to do exactly?
> Does not a line have zero 'width' and 'height' by definition?
> If you want to change the size of your line, perhaps you could change
> Point1
> and Point2 on your line when you needed. Otherwise you could also
> position
> your line in 3D instead of using an Actor2D, this would give you some more
> flexibility.
>
> -SN
>
> -----Original Message-----
>
> I've been trying so hard, and It seems vtkActor2D ignores SetPositon2()
> method (or vtkActor2D->GetPosition2Coordinate->SetValue(x,y) method - see
> HTML vtkActor2D help). Could somebody help me if this is what's actually
> happening?
>
>
>>> On 6/26/07, Isidro Moreno <morenoisidro at yahoo.com.ar> wrote:
>>>> Mark,
>>>>
>>>> SetWidth() and SetHeight() methods (vtkProp's methods),define the
>>>> dimensions of the rectangle in which the line is drawn (it could be not
>>>> a
>>>> line, but also a circle, a polygon, etc.). In fact, that rectangle is
>>>> which
>>>> I want to autoscale when window's size changes. As a result, the line
>>>> would
>>>> fit to it. That's what I've understood till now. But I could be
>>>> wrong...
>>>>
>>>> Isidro
>>>>
>>>>
>>>> >
>>>> > On 6/26/07, Isidro Moreno <morenoisidro at yahoo.com.ar> wrote:
>>>> >>
>>>> >>
>>>> >> Hello! I've made a simple VTK/C++ test program. It's just a 2D line.
>>>> >> Now,
>>>> >> I
>>>> >> don't know how to make the line size change. I've tried many
>>>> >> methods;
>>>> >> and
>>>> >> changing vtkActor's coordinate system (vtkActor2D's), but no
>>>> >> results.
>>>> >> I
>>>> >> even
>>>> >> wonder what coordinate system is vtkLineSource defined in (see code
>>>> >> below).
>>>> >>
>>>> >> Here's my code:
>>>> >>
>>>> >> vtkLineSource *line=vtkLineSource::New();
>>>> >> line->SetPoint1(20.0,20.0,0.0); // what Coordinate System??
>>>> >> line->SetPoint2(80.0,150.0,0.0); // what Coordinate System??
>>>> >>
>>>> >> vtkPolyDataMapper2D *mapper=vtkPolyDataMapper2D::New();
>>>> >> mapper->SetInput(line->GetOutput());
>>>> >>
>>>> >> vtkActor2D *actor=vtkActor2D::New();
>>>> >> actor->SetMapper(mapper);
>>>> >> actor->GetProperty()->SetColor(1.0,0.0,0.0);
>>>> >> actor->SetWidth(0.5); // Doesn't work!! - The same happens
>>>> >> with vtkActor2D->GetPosition2Coordinate->SetValue(double width ,
>>>> >> double height)
>>>> >> actor->SetHeight(0.5); // Doesn't work!! - The same happens
>>>> >> with vtkActor2D->GetPosition2Coordinate->SetValue(double width ,
>>>> >> double height)
>>>> >>
>>>> >> vtkRenderer *render=vtkRenderer::New();
>>>> >> vtkRenderWindow *win=vtkRenderWindow::New();
>>>> >> win->AddRenderer(render);
>>>> >>
>>>> >> vtkRenderWindowInteractor
>>>> >> *interac=vtkRenderWindowInteractor::New();
>>>> >> interac->SetRenderWindow(win);
>>>> >>
>>>> >> render->AddActor2D(actor);
>>>> >> render->SetBackground(0.1,0.2,0.4);
>>>> >>
>>>> >> win->Render();
>>>> >>
>>>> >> interac->Initialize();
>>>> >> interac->Start();
>>>> >>
>>>> >> line->Delete();
>>>> >> mapper->Delete();
>>>> >> actor->Delete();
>>>> >> render->Delete();
>>>> >> win->Delete();
>>>> >> interac->Delete();
>>>> >>
>>>> >> I want to make the line resize when changing windows size. I'd be
>>>> >> very
>>>> >> grateful if somebody could help me with this. Thanks!!!
>
> This e-mail may contain confidential and/or privileged information for the
> sole use of the intended recipient. Any review or distribution by anyone
> other than the person for whom it was originally intended is strictly
> prohibited. If you have received this e-mail in error, please contact the
> sender and delete all copies. Opinions, conclusions or other information
> contained in this e-mail may not be that of the organization.
>
>
> --
> No virus found in this incoming message.
> Checked by AVG Free Edition.
> Version: 7.5.472 / Virus Database: 269.9.10/873 - Release Date: 26/6/2007
> 23:54
>
>
More information about the vtkusers
mailing list