一个很有意思的现象:(c#与VTK)在usercontrol里使用vtk后发生
vtk吧
全部回复
仅看楼主
level 7
yusiyu_1987 楼主
用鼠标转动操作,其他的东西都能动,就是坐标轴不动,好生奇怪!
看看有人懂是啥原因不。
贴代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Kitware.VTK;
namespace VTK_NewDemo3
{
public partial class UserControl1 : Kitware.VTK.RenderWindowControl
{
public UserControl1()
{
InitializeComponent();
}
private void UserControl1_Load(object sender, EventArgs e)
{
// Create a sphere
vtkSphereSource sphereSource = vtkSphereSource.New();
sphereSource.SetCenter(1.0, 0.0, 0.0);
sphereSource.Update();
// Create a mapper and actor
vtkPolyDataMapper sphereMapper = vtkPolyDataMapper.New();
sphereMapper.SetInputConnection(sphereSource.GetOutputPort());
vtkActor sphereActor = vtkActor.New();
sphereActor.SetMapper(sphereMapper);
// Create a cone
vtkConeSource coneSource = vtkConeSource.New();
// Create a mapper and actor
vtkPolyDataMapper coneMapper = vtkPolyDataMapper.New();
coneMapper.SetInputConnection(coneSource.GetOutputPort());
vtkActor coneActor = vtkActor.New();
coneActor.SetMapper(coneMapper);
////////////////////////////////////////////////////////////////////////////////////
vtkRenderWindowInteractor iren = RenderWindow.GetInteractor();
vtkAxesActor axesActor = new vtkAxesActor();
vtkPropAssembly assembly = vtkPropAssembly.New();
assembly.AddPart(coneActor);
assembly.AddPart(sphereActor);
assembly.AddPart(axesActor);
vtkOrientationMarkerWidget axesWidget = new vtkOrientationMarkerWidget();
axesWidget.SetOutlineColor(0, 0, 0);
axesWidget.SetOrientationMarker(assembly);
axesWidget.SetInteractor(iren);
axesWidget.EnabledOn();
axesWidget.SetInteractive(0);
////////////////////////////////////////////////////////////////////////////////////
vtkRenderer Renderer = RenderWindow.GetRenderers().GetFirstRenderer();
Renderer.SetBackground(1, 1, 1);
// Add the actors to the scene
Renderer.AddActor(sphereActor);
Renderer.AddActor(coneActor);
Renderer.ResetCamera();
RenderWindow.Render();
}
}
}
调用代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace VTK_NewDemo3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.panel1.Controls.Clear();
// 重新布局
UserControl1 control = new UserControl1();
control.Size = this.panel1.Size;
control.Dock = DockStyle.Fill;
control.Location = new Point(0, 0);
this.panel1.Controls.Add(control);
this.Refresh();
GC.Collect();
}
}
}
2015年02月16日 02点02分 1
level 12
vtkOrientationMarkerWidget 你的意思是这个东西不动吧?
2015年02月25日 08点02分 2
level 12
vtkOrientationMarkerWidget
没深入研究过,直觉是因为它有独立的renderer?
2015年02月25日 08点02分 3
level 1
RenderWindow 是控件吗 为什么我会出错
2017年08月23日 10点08分 4
1