Hi,<br> The following is my C++ code converted from annotatePick.tcl. I know there are many bugs,expect you to correct them.<br> Thanks again <br><br><br>static void annotatePick(void *arg) <br>{ vtkCellPicker *picker=vtkCellPicker::New();<br> vtkTextMapper *textMapper=vtkTextMapper::New();<br> vtkActor2D *textActor=vtkActor2D::New();<br> vtkRenderWindow *renWin=vtkRenderWindow::New();<br><br> if (picker->GetCellId()< 0 ) <br>        {<br>                textActor->VisibilityOff();<br>                <br> } else <br>        {<br>                float *selPt; <br>                float *pickpos;<br>                int xp,yp,zp;<br>                int X,Y;<br>                <br>                selPt=picker->GetSelectionPoint(); <br> cout<<"Screen location:"<<selPt[0]<<" "<<selPt[1]<<"\n";<br>                X=selPt[0];<br>                Y=selPt[1];<br>                pickpos = picker->GetPickPosition(); <br>                cout<<"Point location:"<<pickpos[0]<<" "<<pickpos[1]<<" "<<pickpos[2]<<"\n";<br>                xp=pickpos[0];<br>                yp=pickpos[1];<br>                zp=pickpos[2];<br>                <br>                textMapper->SetInput("($xp, $yp, $zp)");<br>                textActor->SetPosition(X,Y);<br>                textActor->VisibilityOn();<br>        }<br>        <br>        renWin->Render();<br>}<br><br><br>int main(int argc, char* argv[])<br>{ vtkSphereSource *sphere=vtkSphereSource::New();<br><br>vtkPolyDataMapper *sphereMapper=vtkPolyDataMapper::New();<br>sphereMapper->SetInput(sphere->GetOutput());<br>sphereMapper->GlobalImmediateModeRenderingOn();<br>vtkLODActor *sphereActor=vtkLODActor::New();<br>sphereActor->SetMapper(sphereMapper);<br><br>vtkConeSource *cone=vtkConeSource::New();<br>vtkGlyph3D *glyph=vtkGlyph3D::New();<br>glyph->SetInput(sphere->GetOutput());<br>glyph->SetSource(cone->GetOutput());<br>glyph->SetVectorModeToUseNormal();<br>glyph->SetScaleModeToScaleByVector();<br>glyph->SetScaleFactor(0.25);<br>vtkPolyDataMapper *spikeMapper=vtkPolyDataMapper::New();<br>spikeMapper->SetInput(glyph->GetOutput());<br>vtkLODActor *spikeActor=vtkLODActor::New();<br>spikeActor->SetMapper(spikeMapper);<br><br>vtkCellPicker *picker=vtkCellPicker::New();<br>//picker->AddObserver(vtkCommand::EndPickEvent,annotatePick);<br><br>vtkTextMapper *textMapper=vtkTextMapper::New();<br><br><br>vtkActor2D *textActor=vtkActor2D::New();<br>textActor->VisibilityOff();<br>textActor->SetMapper(textMapper);<br><br>vtkRenderer *ren1=vtkRenderer::New();<br>vtkRenderWindow *renWin=vtkRenderWindow::New();<br>renWin->AddRenderer(ren1);<br>vtkRenderWindowInteractor *iren=vtkRenderWindowInteractor::New();<br>iren->SetRenderWindow(renWin);<br>iren->SetPicker(picker);<br><br>ren1->AddActor2D(textActor);<br>ren1->AddActor(sphereActor);<br>ren1->AddActor(spikeActor);<br>ren1->SetBackground(1,1,1);<br>renWin->SetSize(300,300);<br><br>vtkCamera *cam1=vtkCamera::New();<br>cam1=ren1->GetActiveCamera();<br>cam1->Zoom(1.4);<br><br>//iren AddObserver UserEvent {wm deiconify .vtkInteract}<br><br>renWin->Render();<br>iren->Start();<br>iren->Initialize();<br>//picker->Pick(85,126,0,ren1);<br><br>        return 0;<br>}<br><font style='font-size:14.8px'> </font>
<table width="750" border="0" cellspacing="1" cellpadding="0">
<tr>
<td height="1" bgcolor="#09448E"> </td>
</tr>
<tr>
<td height="22"><font style='font-size:14.8px'><a href="http://www.126.com" target="_blank" style="text-decoration: none ;">·<b><font color=red>1.5G
</font></b>全国最大空间——网易126免费邮箱 http://www.126.com 火热抢注中>>> </a></font></td>
</tr>
<tr>
<td height="22"><font style='font-size:14.8px'><a href="http://www.126.com" target="_blank" style="text-decoration: none ;"> 体验30兆超大附件发送,享受100%卡巴斯基专业杀毒……更多超G感受等您来体验!</a>
</font></td>
</tr>
</table>
<font style='font-size:14.8px'><br>
<br>
<a href="http://www.126.com" target="_blank" style="text-decoration: none ;"><br>
</a></font> <font style='font-size:14.8px'> </font>