TeeChart 3D 显示三维的图形,使用Surface
绘制一个球
根据公式x^2+y^2+z^2=R^2;
令x=RsinAcosB y=RcosAcosB z=RsinB
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; using Steema.TeeChart; using Steema.TeeChart.Styles; using System.Drawing.Drawing2D; using Steema.TeeChart.Tools; namespace WindowsFormsApplication1 { public partial class Form1 : Form { private TChart tChart1 = new TChart(); private Surface surfaceSeries1 = new Surface(); private GridBand gridBand = new GridBand(); private Surface surfaceSeries2 = new Surface(); public Form1() { InitializeComponent(); Init(); } private void Init() { tChart1.Series.Add(surfaceSeries1); tChart1.Series.Add(surfaceSeries2); tChart1.Dock = DockStyle.Fill; this.tChart1.Aspect.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; this.tChart1.Aspect.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit; this.tChart1.Axes.Depth.Visible = true; this.tChart1.Axes.Depth.Labels.ValueFormat = "0.#"; this.tChart1.Axes.Depth.Increment = 0.2; this.tChart1.Axes.Bottom.Labels.ValueFormat = "0.#"; this.tChart1.Axes.Bottom.Increment = 0.1; this.tChart1.Aspect.Chart3DPercent = 100; this.tChart1.Aspect.Orthogonal = false; this.tChart1.Aspect.Perspective = 50; this.tChart1.Aspect.Rotation = 327; this.tChart1.Aspect.Elevation = 352; this.tChart1.Aspect.Zoom = 70; this.tChart1.Walls.Bottom.Pen.Visible = false; this.tChart1.Walls.Bottom.Size = 5; this.tChart1.Walls.Left.Pen.Visible = false; this.tChart1.Walls.Left.Size = 5; this.tChart1.Panel.Brush.Color = System.Drawing.Color.FromArgb(((System.Byte)(254)), ((System.Byte)(255)), ((System.Byte)(255)), ((System.Byte)(255))); Controls.Add(tChart1); InitSurface(surfaceSeries1, Color.Red); InitSurface(surfaceSeries2, Color.Blue); double r = 10; double z = 0; List<double> arrayX = new List<double>(); List<double> arrayY = new List<double>(); List<double> arrayZ = new List<double>(); List<double> arrayX1 = new List<double>(); List<double> arrayY1 = new List<double>(); List<double> arrayZ1 = new List<double>(); tChart1.AutoRepaint = false; try { for (double x = -r; x <= r; x += 0.1) { for (double y = -r; y <= r; y += 0.1) { z = r * r - x * x - y * y; if (z >= 0) { z = Math.Sqrt(z); arrayX.Add(x); arrayY.Add(y); arrayZ.Add(-z); } } } for (double x = -r; x <= r; x += 0.1) { for (double y = -r; y <= r; y += 0.1) { z = r * r - x * x - y * y; if (z >= 0) { z = Math.Sqrt(z); arrayX1.Add(x); arrayY1.Add(y); arrayZ1.Add(z); } } } surfaceSeries1.Add(arrayX.ToArray(), arrayZ.ToArray(), arrayY.ToArray());//特别需要注意的是,z在中间 surfaceSeries2.Add(arrayX1.ToArray(), arrayZ1.ToArray(), arrayY1.ToArray()); } catch (Exception ex) { MessageBox.Show(ex.Message); } tChart1.AutoRepaint = true; tChart1.Refresh(); } private void InitSurface(Surface s, Color color) { s.Pen.Color = color; s.Marks.Symbol.Shadow.Height = 1; s.Marks.Symbol.Shadow.Visible = true; s.Marks.Symbol.Shadow.Width = 1; s.NumXValues = 25; s.NumZValues = 25; s.PaletteMin = 0; s.PaletteStep = 0; s.UseColorRange = false; s.UsePalette = true; s.IrregularGrid = true; s.ShowInLegend = false; s.UseColorRange = false; s.UsePalette = true; s.PaletteStyle = Steema.TeeChart.Styles.PaletteStyles.Strong; s.PaletteSteps = 10; } } }