How can I position a vtkActor2D relative to the upper right corner of the render window? I am using the following code to load an image and display it as an overlay on my 3D scene:
vtkPNGReader pngReader = vtkPNGReader.New();
pngReader.SetFileName("image.png");
pngReader.Update();
vtkImageMapper imageMapper = vtkImageMapper.New();
imageMapper.SetInputConnection(pngReader.GetOutputPort());
imageMapper.SetColorWindow(255);
imageMapper.SetColorLevel(127.5);
vtkActor2D imageActor = vtkActor2D.New();
imageActor.SetMapper(imageMapper);
vtkRenderer renderer = renderWindowControl1.RenderWindow.GetRenderers().GetFirstRenderer();
renderer.AddActor2D(imageActor);
I know I can set the actor’s position using
imageActor.SetPosition(42, 42);
but this is, of course, relative to the lower left corner. So how can I specify that the image is drawn relative to (respectively in) the upper right corner of the render window and stays in its relative position even during a resize of the render window? I searched the internet for several hours now but could not even find a hint.
You could observe the ModifiedEvent on the vtkRenderWindow and check if its GetSize method returns different values than the last time you observed the event. Then you can use GetSize – [your position] to set the coordinates of your actor.