IsoContours
VTKExamples/CSharp/ImplicitFunctions/IsoContours
Description¶
A tutorial on how to setup a Windows Forms Application utilizing ActiViz.NET can be found here: Setup a Windows Forms Application to use ActiViz.NET
Note
As long as ActiViz.NET is not build with VTK version 6.0 or higher you must define the preprocessor directive VTK_MAJOR_VERSION_5.
Note
To use this example create a Windows Forms Application, delete Form1.Designer.cs and replace the content of Form1.cs with this:
Code¶
IsoContours.cs
using System; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; using System.Runtime.InteropServices; using System.Diagnostics; using Kitware.VTK; namespace ActiViz.Examples { public class Form1 : Form { private System.ComponentModel.IContainer components = null; private vtkContourFilter _ContourFilter; private vtkRenderWindow _RenderWindow; public Form1() { InitializeComponent(); this.Size = new Size(620, 400); } private void Form1_Load(object sender, EventArgs e) { try { IsoContours(); } catch(Exception ex) { MessageBox.Show(ex.Message, "Exception", MessageBoxButtons.OK); } } private void sliderContourValue_Scroll(object sender, EventArgs e) { TrackBar slider = sender as TrackBar; if(slider != null) { _ContourFilter.GenerateValues(1, slider.Value, slider.Value); _RenderWindow.Render(); } } private void IsoContours() { vtkImageData data = vtkImageData.New(); CreateData(ref data); // Create an isosurface _ContourFilter = vtkContourFilter.New(); #if VTK_MAJOR_VERSION_5 _ContourFilter.SetInput(data); #else contourFilter.SetInputData(data); #endif _ContourFilter.GenerateValues(1, 10, 10); // (numContours, rangeStart, rangeEnd) // Map the contours to graphical primitives vtkPolyDataMapper contourMapper = vtkPolyDataMapper.New(); #if VTK_MAJOR_VERSION_5 contourMapper.SetInputConnection(_ContourFilter.GetOutputPort()); #else contourMapper.SetInputData(contourFilter); #endif // Create an actor for the contours vtkActor contourActor = vtkActor.New(); contourActor.SetMapper(contourMapper); // Create the outline vtkOutlineFilter outlineFilter = vtkOutlineFilter.New(); vtkPolyDataMapper outlineMapper = vtkPolyDataMapper.New(); #if VTK_MAJOR_VERSION_5 outlineFilter.SetInput(data); outlineMapper.SetInputConnection(outlineFilter.GetOutputPort()); #else outlineFilter.SetInputData(data); outlineMapper.SetInputData(outlineFilter); #endif vtkActor outlineActor = vtkActor.New(); outlineActor.SetMapper(outlineMapper); // get a reference to the renderwindow of our renderWindowControl1 _RenderWindow = renderWindowControl1.RenderWindow; // renderer vtkRenderer renderer = _RenderWindow.GetRenderers().GetFirstRenderer(); // set background color renderer.SetBackground(.2, .3, .4); // add our actor to the renderer renderer.AddActor(contourActor); renderer.AddActor(outlineActor); } void CreateData(ref vtkImageData data) { data.SetExtent(-25, 25, -25, 25, 0, 0); #if VTK_MAJOR_VERSION_5 data.SetNumberOfScalarComponents(1); data.SetScalarTypeToDouble(); #else data.AllocateScalars(VTK_DOUBLE,1); #endif int[] extent = data.GetExtent(); for(int y = extent[2]; y <= extent[3]; y++) { for(int x = extent[0]; x <= extent[1]; x++) { IntPtr ptr = data.GetScalarPointer(x, y, 0); double[] pixel = new double[] { Math.Sqrt(Math.Pow(x, 2.0) + Math.Pow(y, 2.0)) }; Marshal.Copy(pixel, 0, ptr, 1); } } vtkXMLImageDataWriter writer = vtkXMLImageDataWriter.New(); writer.SetFileName(@"c:\vtk\vtkdata-5.8.0\Data\testIsoContours.vti"); #if VTK_MAJOR_VERSION_5 writer.SetInputConnection(data.GetProducerPort()); #else writer.SetInputData(data); #endif writer.Write(); } /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if(disposing && ( components != null )) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.lblSliderMaxValue = new System.Windows.Forms.Label(); this.lblSliderMinValue = new System.Windows.Forms.Label(); this.lblSliderTitle = new System.Windows.Forms.Label(); this.sliderContourValue = new System.Windows.Forms.TrackBar(); this.renderWindowControl1 = new Kitware.VTK.RenderWindowControl(); this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); this.splitContainer1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.sliderContourValue)).BeginInit(); this.SuspendLayout(); // // splitContainer1 // this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; this.splitContainer1.IsSplitterFixed = true; this.splitContainer1.Location = new System.Drawing.Point(0, 0); this.splitContainer1.Name = "splitContainer1"; // // splitContainer1.Panel1 // this.splitContainer1.Panel1.Controls.Add(this.lblSliderMaxValue); this.splitContainer1.Panel1.Controls.Add(this.lblSliderMinValue); this.splitContainer1.Panel1.Controls.Add(this.lblSliderTitle); this.splitContainer1.Panel1.Controls.Add(this.sliderContourValue); // // splitContainer1.Panel2 // this.splitContainer1.Panel2.Controls.Add(this.renderWindowControl1); this.splitContainer1.Size = new System.Drawing.Size(604, 362); this.splitContainer1.SplitterDistance = 213; this.splitContainer1.SplitterWidth = 1; this.splitContainer1.TabIndex = 0; // // lblSliderMaxValue // this.lblSliderMaxValue.AutoSize = true; this.lblSliderMaxValue.Location = new System.Drawing.Point(176, 69); this.lblSliderMaxValue.Name = "lblSliderMaxValue"; this.lblSliderMaxValue.Size = new System.Drawing.Size(19, 13); this.lblSliderMaxValue.TabIndex = 1; this.lblSliderMaxValue.Text = "30"; // // lblSliderMinValue // this.lblSliderMinValue.AutoSize = true; this.lblSliderMinValue.Location = new System.Drawing.Point(21, 69); this.lblSliderMinValue.Name = "lblSliderMinValue"; this.lblSliderMinValue.Size = new System.Drawing.Size(13, 13); this.lblSliderMinValue.TabIndex = 1; this.lblSliderMinValue.Text = "1"; // // lblSliderTitle // this.lblSliderTitle.AutoSize = true; this.lblSliderTitle.Location = new System.Drawing.Point(18, 11); this.lblSliderTitle.Name = "lblSliderTitle"; this.lblSliderTitle.Size = new System.Drawing.Size(74, 13); this.lblSliderTitle.TabIndex = 1; this.lblSliderTitle.Text = "Contour Value"; // // sliderContourValue // this.sliderContourValue.Location = new System.Drawing.Point(12, 37); this.sliderContourValue.Maximum = 30; this.sliderContourValue.Minimum = 1; this.sliderContourValue.Name = "sliderContourValue"; this.sliderContourValue.Size = new System.Drawing.Size(186, 45); this.sliderContourValue.TabIndex = 0; this.sliderContourValue.TickFrequency = 5; this.sliderContourValue.Value = 10; this.sliderContourValue.Scroll += new System.EventHandler(this.sliderContourValue_Scroll); // // renderWindowControl1 // this.renderWindowControl1.AddTestActors = false; this.renderWindowControl1.Dock = System.Windows.Forms.DockStyle.Fill; this.renderWindowControl1.Location = new System.Drawing.Point(0, 0); this.renderWindowControl1.Name = "renderWindowControl1"; this.renderWindowControl1.Size = new System.Drawing.Size(390, 362); this.renderWindowControl1.TabIndex = 0; this.renderWindowControl1.TestText = null; // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(604, 362); this.Controls.Add(this.splitContainer1); this.Name = "Form1"; this.Text = "IsoContours"; this.Load += new System.EventHandler(this.Form1_Load); this.splitContainer1.Panel1.ResumeLayout(false); this.splitContainer1.Panel1.PerformLayout(); this.splitContainer1.Panel2.ResumeLayout(false); this.splitContainer1.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.sliderContourValue)).EndInit(); this.ResumeLayout(false); } #endregion private System.Windows.Forms.SplitContainer splitContainer1; private System.Windows.Forms.Label lblSliderTitle; private System.Windows.Forms.TrackBar sliderContourValue; private Kitware.VTK.RenderWindowControl renderWindowControl1; private System.Windows.Forms.Label lblSliderMaxValue; private System.Windows.Forms.Label lblSliderMinValue; } }