zoukankan      html  css  js  c++  java
  • 绘制三角形

    代码:

    public partial class MainForm : Form
    {
       public MainForm()
       {
           InitializeComponent();
           this.InitialDX();
       }
     
       private Device device = null;
     
       private void InitialDX()
       {
           PresentParameters presentParams = new PresentParameters();
           presentParams.Windowed = true;
           presentParams.SwapEffect = SwapEffect.Discard;
     
           device = new Device(
               0,
               DeviceType.Hardware,
               this,
               CreateFlags.SoftwareVertexProcessing,
               presentParams);
       }
     
       protected override void OnPaint(PaintEventArgs e)
       {
           base.OnPaint(e);
           this.DrawDX();
       }
     
       private void DrawDX()
       {
           if (this.device == null)
               return;
     
           this.device.Clear(ClearFlags.Target,
               Color.AliceBlue,
               1f,
               0);
     
           this.device.BeginScene();
           //绘制DX图形
           this.DrawMyGraphics();
           this.device.EndScene();
     
           this.device.Present();//显示图形
       }
     
       private void DrawMyGraphics()
       {
           CustomVertex.TransformedColored[] vertex =
               new CustomVertex.TransformedColored[3];
     
           vertex[0].Position = new Vector4(
               0,
               this.Height,
               0,
               0);
           vertex[0].Color = Color.Red.ToArgb();
     
           vertex[1].Position = new Vector4(
               this.Width / 2,
               0,
               0,
               0);
           vertex[1].Color = Color.Green.ToArgb();
     
           vertex[2].Position = new Vector4(
               this.Width,
               this.Height,
               0,
               0);
           vertex[2].Color = Color.Blue.ToArgb();
     
           this.device.VertexFormat = CustomVertex.TransformedColored.Format;
           this.device.DrawUserPrimitives(PrimitiveType.TriangleList,
               1,
               vertex);
       }
    }

    结果:

    image

    绘制三角形的代码主要在DrawMyGraphics中。需要注意的是顶点的索引是顺时针的,如果是逆时针,结果就没有三角形了,需要进行特殊设置。

    device.RenderState.CullMode = Cull.None;

  • 相关阅读:
    67. Add Binary
    66. Plus One
    64. Minimum Path Sum
    63. Unique Paths II
    How to skip all the wizard pages and go directly to the installation process?
    Inno Setup打包之先卸载再安装
    How to change the header background color of a QTableView
    Openstack object list 一次最多有一万个 object
    Openstack 的 Log 在 /var/log/syslog 里 【Ubuntu】
    Git 分支
  • 原文地址:https://www.cnblogs.com/sharpfeng/p/1950635.html
Copyright © 2011-2022 走看看