vb.net三维控件 vbnet chart控件

怎么利用VB.NET实现三维绘图

数学上不是有斜二测画法,算好坐标即可画出

创新互联成立与2013年,先为钟楼等服务建站,钟楼等地企业,进行企业商务咨询服务。为钟楼企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

或者用AnyCAD的.Net图形控件

也可以调用matlab 实现

VB.net怎样加第三方控件

工具箱右键单击——选择项……——选择.net组件或com组件——点击“浏览”选择控件dll文件,然后工具箱中就会出现新加的控件

VB.net可以开发小型3D图形显示软件吗?

可以借助DirectX来编程。免费3D引擎可不好找,一般来说速度比不上硬件加速后的DX,尤其令人头疼的是一般都没有针对VB的文档,LZ有这方面理想的话,自己写一个吧……

我不得不承认在VB上写DirectX的教程相当难找!如果LZ想深入研究三维图形问题,C++一定要学,就算不能用C++编程,起码要能把C++程序翻译成VB程序。

我自己学会DX编程花了两三个月(很浅)。编这样一个程序难度是有点大的。

工具:DirectX9和其针对VB的库(项目-添加引用。.NET库里DX库一般都有),VB不知道现在支不支持DX10以上的版本,不过9绝对够用了。

思路:一切3D图形都是由三角形拼成的。矩形挖掉一个圆孔可不是一个方便画的图形,我估计至少得有24个三角形。你需要记录这些点的坐标,或者干脆把它们写在文件里,到时读出来。

这是我的一个老DX程序的不完全的代码(显示一个黑乎乎的平面),不一定能编译,可以参考一下。

Imports Microsoft.DirectX '一定要~

Public Class FormMain

'Direct3D Startup

Dim d3dpp As New Direct3D.PresentParameters 'DX基本参数,例如全屏还是窗口等

Public MyDevice As Direct3D.Device ‘DX基本设备,画图就靠它。

'Matrices

Dim matWorld, matView, matProj As Matrix '世界位置矩阵,摄像机位置矩阵和透视矩阵,数学要学好啊。

'mesh

Public MyPlane as Direct3D.Mesh ’我们的物体

Public VBPlane(3) As Direct3D.CustomVertex.PositionNormalTextured '存放顶点位置的数组

#Region "DX Core"

Public Sub InitDeviceObjects()

With d3dpp ‘以下请照抄。

.Windowed = True ‘不全屏。

.SwapEffect = Direct3D.SwapEffect.Discard ’双缓冲交换效果。请百度“双缓冲”

.BackBufferFormat = Direct3D.Format.Unknown

.EnableAutoDepthStencil = True ’让DX自动管理深度缓冲

.AutoDepthStencilFormat = Direct3D.DepthFormat.D16

End With

MyDevice = New Direct3D.Device(0, Direct3D.DeviceType.Hardware, Me.Handle, Direct3D.CreateFlags.HardwareVertexProcessing, d3dpp) '创建DX设备啦!以下两句请照抄。

MyDevice.SetRenderState(Direct3D.RenderStates.ZEnable, True) ‘Z缓冲

MyDevice.SetRenderState(Direct3D.RenderStates.NormalizeNormals, True)'法线归一化,请看相关数学书籍。

End Sub

Public Sub RestoreDeviceObjects()

Dim PlaneIB() As Short = {0, 1, 3, 0, 2, 3} ’顶点索引信息。

Dim AttrTable(1) As Direct3D.AttributeRange ‘顶点分组属性表

AttrTable(0).AttributeId = 0

AttrTable(0).FaceStart = 0

AttrTable(0).FaceCount = 2 ’有两个三角形

AttrTable(0).VertexStart = 0

AttrTable(0).VertexCount = 4 ‘四个点

‘顶点坐标信息。

VBPlane(0) = New Direct3D.CustomVertex.PositionNormalTextured(-500, -500, 0, 0, 0, 1, 0, 0)

VBPlane(1) = New Direct3D.CustomVertex.PositionNormalTextured(500, -500, 0, 0, 0, 1, 1, 0)

VBPlane(2) = New Direct3D.CustomVertex.PositionNormalTextured(-500, 500, 0, 0, 0, 1, 0, 1)

VBPlane(3) = New Direct3D.CustomVertex.PositionNormalTextured(500, 500, 0, 0, 0, 1, 1, 1)

MyPlane = New Direct3D.Mesh(2, 4, Direct3D.MeshFlags.Managed, Direct3D.VertexFormats.Position + Direct3D.VertexFormats.Normal + Direct3D.VertexFormats.Texture1, MyDevice) ’创建物体

MyPlane.SetVertexBufferData(VBPlane, Direct3D.LockFlags.None) ‘输入顶点坐标数据

MyPlane.SetIndexBufferData(PlaneIB, Direct3D.LockFlags.None) ‘输入索引数据

MyPlane.SetAttributeTable(AttrTable) ‘输入顶点分组属性表

End Sub

Public Sub Render() ‘调用它画图

Dim vlook As New Vector3(1, 0, 0)

Dim vPos As New Vector3(0,0,0)

Dim vUp As New Vector3(0, 0, 1)

MatView = Matrix.LookAtLH(vPos, vlook, vUp) ‘计算摄像机位置矩阵

Device.SetTransform(Direct3D.TransformType.View, MatView) ‘设置当前摄像机位置矩阵为MatView。

Dim fAspect As Single = Me.Width / Me.Height ’窗口长宽比

matProj = Matrix.PerspectiveFovLH(Math.PI / 4, fAspect, 1.0F, 10001) ‘计算透视矩阵MatProj。

MyDevice.SetTransform(Direct3D.TransformType.Projection, matProj) ‘设置当前透视矩阵为MatProj。

MyDevice.Clear(Direct3D.ClearFlags.Target + Direct3D.ClearFlags.ZBuffer, Color.Blue, 1.0F, 0) ’先刷蓝屏

MyDevice.BeginScene() ‘开始画

MatWorld = Matrix.Identity ’物体位于原点,不旋转

Device.SetTransform(Direct3D.TransformType.World, MatWorld) ’设置物体位置

Me.Mesh.DrawSubset(0) ‘画物体

MyDevice.EndScene() ’结束

MyDevice.Present() ‘显示在屏幕上

End Sub

Public Sub DeleteDeviceObjects() ’结束程序时放掉资源

MyPlane.Dispose()

MyDevice.Dispose()

End Sub

#End Region

Private Sub FormMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing

DeleteDeviceObjects()

Windows.Forms.Cursor.Show()

End Sub

Private Sub FormMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

InitDeviceObjects()

RestoreDeviceObjects()

Windows.Forms.Cursor.Hide()

Render()

End Sub

End Class

VB.NET中怎么加载第三方控件

点击菜单:项目=》添加引用 弹出窗口后选择“COM”项,然后找到你要加载的控件。

记得先调用CMD使用 regsvr32 注册你准备加载的控件哈。


当前标题:vb.net三维控件 vbnet chart控件
URL标题:http://bzwzjz.com/article/doiipjj.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站制作 手机网站制作 外贸营销网站建设 四川成都网站建设 营销网站建设 营销型网站建设 定制网站设计 移动手机网站制作 成都商城网站制作 网站制作 网站建设公司 网站建设 成都企业网站制作 网站建设方案 重庆网站建设 营销型网站建设 成都做网站建设公司 成都品牌网站设计 专业网站建设 成都网站建设公司 成都网站建设 网站建设