0
ActiViz.NET 및 Visual Studio 2013을 사용하여 WPF 프로젝트의 vtk 라이브러리에서 RenderWindowControl을로드하려고합니다. 새 프로젝트를 수행 한 이후로 라이브러리가 올바르게 작동하지만 나는 그것을 내 작업에 통합하려고 시도하지만 배우는 보여주지 않습니다.VtkActor가 WPF 프로젝트에 표시되지 않습니다.
MainWindow.xaml :
<Window x:Class="myProject.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:VtkTab="clr-namespace:myProject.Views.UITabs.VtkTab"
x:Name="Mainwindow"
MinHeight="600"
MinWidth="800"
Title="{Binding Title}"
Height="720"
Width="1280"
Icon="{StaticResource ApplicationIcon}"
Loaded="OnLoaded"
DataContext="{Binding Main, Source={StaticResource ViewModelLocator}}"
Style="{StaticResource WindowStyle}"
mc:Ignorable="d">
<DockPanel>
<TabControl>
....
....
<VtkTab:VtkTabView />
....
....
</TabControl>
</DockPanel>
</Window>
VtkTabView.xaml :
<UserControl x:Class="myProject.Views.UITabs.VtkTab.VtkTabView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vtk="clr-namespace:Kitware.VTK;assembly=Kitware.VTK"
Height="480" Width="640">
<WindowsFormsHost Name="Wfh">
<vtk:RenderWindowControl x:Name="RenderControl" />
</WindowsFormsHost>
</UserControl>
VtkTabView.xaml.cs :
public partial class UITabView
{
protected static Random _random = new Random();
vtkActor actor = vtkActor.New();
public VtkTabView()
{
InitializeComponent();
var sphere = vtkSphereSource.New();
sphere.SetThetaResolution(8);
sphere.SetPhiResolution(16);
var shrink = vtkShrinkPolyData.New();
shrink.SetInputConnection(sphere.GetOutputPort());
shrink.SetShrinkFactor(0.9);
var move = vtkTransform.New();
move.Translate(_random.NextDouble(), _random.NextDouble(), _random.NextDouble());
var moveFilter = vtkTransformPolyDataFilter.New();
moveFilter.SetTransform(move);
moveFilter.SetInputConnection(shrink.GetOutputPort());
var mapper = vtkPolyDataMapper.New();
mapper.SetInputConnection(moveFilter.GetOutputPort());
// The actor links the data pipeline to the rendering subsystem
actor.SetMapper(mapper);
actor.GetProperty().SetColor(1, 0, 0);
RenderControl.Load += RenderWindowControlOnLoad;
}
void RenderWindowControlOnLoad(object sender, EventArgs e)
{
var renderer = RenderControl.RenderWindow.GetRenderers().GetFirstRenderer();
renderer.AddActor(actor);
renderer.SetBackground(0, 1, 0);
renderer.Render();
}
}
당신이 볼 수 있듯이,이 내 코드입니다 메서드 RenderWindowControlOnLoad (VtkTabView.xaml.cs) 나는 배우 (Sphere)를 가져 와서 WPF로 선언 된 렌더링에 추가하지만 그것은 표시되지 않습니다. 나는 배경 색상을 변경하고 단지의 경우 렌더링하기 위해 전화를 시도했지만 여전히 아직. 감사에게 :(많이 작동하지
의 :(를 작동하지 않습니다 – Sierra
내 솔루션에 코드를 추가하고 올바르게 작동합니다. – JohnnyQ
예, 연습해야하는 proyect에서도 작동합니다. render()를 호출하지 않고도 작동하지만 사용하면 작동하지 않습니다. 내 솔루션에있는 동일한 코드. 사실과 관련이 있다고 생각합니다. 두 번째 xaml에서 호출하는 것이고 아마도이 패널은 해당 항목에 적합하지 않을 수도 있습니다. – Sierra