<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<meta name=Generator content="Microsoft Word 10 (filtered)">
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:blue;
        text-decoration:underline;}
p
        {margin-right:0cm;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman";}
span.EmailStyle19
        {font-family:Arial;
        color:navy;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
        {page:Section1;}
-->
</style>
</head>
<body lang=EN-US link=blue vlink=blue>
<div class=Section1>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Hi Isabelle,</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> </span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>As far as I can see, the pick events are
fired by the Pick() method of the interactor’s picker. If you want to
observe these events, you must add the observers to the picker, not the interactor.
You must also arrange for the Pick() method to be called.</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> </span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>As a start, in the check for LeftButtonPressEvent,
call Pick() with the current mouse event position and then get the point id -</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> </span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> int x = interactor->GetEventPosition()[0];</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> int y = interactor->GetEventPosition()[1];</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> vtkPointPicker* picker = interactor->GetPicker();
</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> picker->Pick( (double)x,
(double)y, 0, renderer );</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> int pointId = picker->GetPointId();</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> </span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>and print the point Id using the TRACE
macro. If you cannot get the LeftButtonPressEvent, see the recent thread on “handle
right mouse click”.</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> </span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>I have drawn various 2D shapes, by first creating
a polydata object, and then, as each point is clicked, add the point as a
vertex to the polydata. The polydata is set as input to vtkGlyph2DMapper (very
similar to vtkTextMapper). This mapper takes vtkGlyphSource2D as a source and
copies the specified shape (diamond, circle, square etc.) to each of the points
in the polydata. The mapper then feeds a single vtkActor2D. Something like …</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> </span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> vtkGlyphSource2D* vtkGlyphSource =
vtkGlyphSource2D::New();</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> vtkGlyphSource->SetGlyphTypeToCircle();</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> m_vtkGlyphMapper = vtkGlyph2DMapper::New();</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> m_vtkGlyphMapper->SetInput( m_vtkInputPolyData
);</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> m_vtkGlyphMapper->SetSource( vtkGlyphSource->GetOutput()
);</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> vtkGlyphSource->Delete();</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> m_vtkGlyphActor = vtkActor2D::New();</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> m_vtkGlyphActor->SetMapper( m_vtkGlyphMapper
);</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> </span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>I can let you have the mapper if you think
it would be helpful.</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> </span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>John.</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> </span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma'>-----Original Message-----<br>
<b><span style='font-weight:bold'>From:</span></b> vtkusers-bounces+jcplatt=lineone.net@vtk.org
[mailto:vtkusers-bounces+jcplatt=lineone.net@vtk.org] <b><span
style='font-weight:bold'>On Behalf Of </span></b>Renaud Isabelle<br>
<b><span style='font-weight:bold'>Sent:</span></b> </span></font><font size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>18 August 2005</span></font><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> </span></font><font size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>16:32</span></font><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'><br>
<b><span style='font-weight:bold'>To:</span></b> vtkusers@public.kitware.com<br>
<b><span style='font-weight:bold'>Subject:</span></b> [vtkusers] help with
interactor and MFC</span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Hi guys, </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>I have to implement user
interaction with my renderwindow in MFC: </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>user picks points
on the displayed medical image and notices them with spheres. I saw that I have
to use <strong><b><font face="Times New Roman">vtkHandleMessage2</font></b></strong>
with <strong><b><font face="Times New Roman">vtkWin32RenderWindowInteractor</font></b></strong>
to handle a left button mouse click and <strong><b><font face="Times New Roman">interactor->AddObserver()</font></b></strong>
to call a function to handle it. </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>But now, I see that <strong><b><font
face="Times New Roman">vtkPointPicker</font></b></strong> exists and that is
doing the same thing. I am really a bit confused with all the options. Here is
what I did:</span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> <strong><b><font
face="Times New Roman">interactor->SetRenderWindow(m_RenderWindow);</font></b></strong></span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
interactor->SetInteractorStyle(NULL);</span></font></b></strong></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> vtkPointPicker
*picker = vtkPointPicker::New();</span></font></b></strong></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
interactor->SetPicker(picker);</span></font></b></strong></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> <strong><b><font
face="Times New Roman">vtkMyCallback* how_execute = vtkMyCallback::New();</font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman"> interactor->AddObserver(
vtkCommand::LeftButtonPressEvent, how_execute );</font></b></strong><br>
<strong><b><font face="Times New Roman"> interactor->AddObserver(
vtkCommand::EndPickEvent, how_execute);</font></b></strong><br>
<strong><b><font face="Times New Roman"> </font></b></strong></span></b></span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
interactor->SetInstallMessageProc(false);</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman"> interactor->Initialize();</font></b></strong></span></b></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>LRESULT CMyView::<strong><b><font
face="Times New Roman">WindowProc(UINT message, WPARAM wParam, LPARAM lParam)</font></b></strong><b><span
style='font-weight:bold'><br>
</span></b>{<br>
// TODO: Add your specialized code here and/or call the base class<br>
<strong><b><font face="Times New Roman">switch ( message )</font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman"> {</font></b></strong><br>
<strong><b><font face="Times New Roman"> case WM_LBUTTONDOWN:</font></b></strong><br>
<strong><b><font face="Times New Roman"> if (
this->interactor->GetInitialized() )</font></b></strong><br>
<strong><b><font face="Times New Roman"> {</font></b></strong><br>
<strong><b><font face="Times New Roman"> return
vtkHandleMessage2(this->m_hWnd, message, wParam, lParam,
this->interactor);</font></b></strong><br>
<strong><b><font face="Times New Roman"> }</font></b></strong><br>
<strong><b><font face="Times New Roman"> break;</font></b></strong><br>
<strong><b><font face="Times New Roman"> }</font></b></strong><br>
</span></b> <strong><b><font face="Times New Roman">return
CFormView::WindowProc(message, wParam, lParam);</font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">}</font></b></strong></span></b></span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>class vtkMyCallback :
public vtkCommand</span></font></b></strong><b><span style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">{</font></b></strong></span></b></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>public:</span></font></b></strong></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> static
vtkMyCallback *New() { return new vtkMyCallback; }</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman"> </font></b></strong><br>
<strong><b><font face="Times New Roman"> virtual void
Execute(vtkObject *caller, unsigned long eventId, void*)</font></b></strong><br>
<strong><b><font face="Times New Roman"> {</font></b></strong><br>
<strong><b><font face="Times New Roman">
vtkRenderWindowInteractor* interactor
= reinterpret_cast<vtkRenderWindowInteractor*>(caller);</font></b></strong></span></b></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
</span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> <strong><b><font
face="Times New Roman">if(eventId == vtkCommand::LeftButtonPressEvent)</font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman"> { </font></b></strong><br>
<strong><b><font face="Times New Roman">
int point[2];</font></b></strong><br>
<strong><b><font face="Times New Roman">
interactor->GetEventPosition(point);</font></b></strong><br>
<strong><b><font face="Times New Roman">
m_viewer->SelectPoint(point[0],point[1]);</font></b></strong><br>
<strong><b><font face="Times New Roman"> }</font></b></strong></span></b></span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> <strong><b><font
face="Times New Roman">if(eventId == vtkCommand::EndPickEvent)</font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman"> { </font></b></strong><br>
<strong><b><font face="Times New Roman">
vtkPointPicker* picker = (vtkPointPicker*) interactor->GetPicker();</font></b></strong><br>
<strong><b><font face="Times New Roman">
if(picker->GetPointId() != -1)</font></b></strong><br>
<strong><b><font face="Times New Roman">
{</font></b></strong><br>
<strong><b><font face="Times New Roman">
float* position = picker->GetPickPosition();</font></b></strong></span></b></span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
m_sphereActor->SetPosition(position);</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">
}</font></b></strong></span></b><br>
}<br>
}</p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>- This seems not to work.
I think that I have to choose between handling one of the event:
LeftButtonPressEvent or EndPickEvent. But I don't know what is the best option.
Could someone tell me what is best? </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>- Btw, my purpose is to
add a circle on each point that user picked. Do I have to handle a <strong><b><font
face="Times New Roman">array of vtkSphereSource</font></b></strong> to display
so many spheres?</span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Thanks for replyiong,
guys,</span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Isabelle</span></font></p>
</div>
<div class=MsoNormal align=center style='margin-left:36.0pt;text-align:center'><font
size=3 face="Times New Roman"><span style='font-size:12.0pt'>
<hr size=1 width="100%" align=center>
</span></font></div>
<p class=MsoNormal style='margin-left:36.0pt'><b><font size=3 color=red
face="Times New Roman"><span style='font-size:12.0pt;color:red;font-weight:
bold'>Appel audio GRATUIT</span></font> partout dans le monde</b> avec le
nouveau Yahoo! Messenger<br>
<a
href="http://us.rd.yahoo.com/messenger/mail_taglines/default/*http:/fr.messenger.yahoo.com">Téléchargez
le ici !</a> </p>
</div>
</body>
</html>