vb.net三維界面編程,vbnet web編程

用VB.NET開發(fā)的應(yīng)用程序,大家用什么軟件或第三方控件做UI界面的編碼???

Visual Studio?2013

公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出洞口免費做網(wǎng)站回饋大家。

Microsoft Visual Studio(簡稱VS)是美國微軟公司的開發(fā)工具包系列產(chǎn)品。VS是一個基本完整的開發(fā)工具集,它包括了整個軟件生命周期中所需要的大部分工具,如UML工具、代碼管控工具、集成開發(fā)環(huán)境(IDE)等等。所寫的目標(biāo)代碼適用于微軟支持的所有平臺,包括Microsoft Windows、Windows Mobile、Windows CE、.NET Framework、.NET Compact Framework和Microsoft?Silverlight?及Windows Phone。?Visual Studio是目前最流行的Windows平臺應(yīng)用程序的集成開發(fā)環(huán)境。最新版本為 Visual Studio 2013 版本,基于.NET Framework?4.5.1 。

在vb.net環(huán)境下圖像處理,用什么建立3D

首先,還是談?wù)剤D像像素時數(shù)據(jù)獲取方面吧,.net中的圖像相關(guān)類基本上都是基于GDI+的,因此,圖像數(shù)據(jù)的獲取其實也是調(diào)用GDI+的一些函數(shù)。這個函數(shù)就是LockBits,在vb.net中彩色圖像數(shù)據(jù)的快速獲取 一文中,我們是調(diào)用了Marshal.Copy把LockBits鎖定的內(nèi)存數(shù)據(jù)拷貝到數(shù)據(jù)中,然后對數(shù)組中的值進行處理。這樣做主要的原因是VB.NET不好直接訪問內(nèi)存(Marshal.ReadByte之類的函數(shù)不適合用于大型的循環(huán)中)。那么,這就造成了2個不好的事情,第一:在同一時間需要2倍于圖像數(shù)據(jù)量的內(nèi)存,第二:內(nèi)存數(shù)據(jù)拷貝到數(shù)據(jù),以及處理后再把數(shù)組的數(shù)據(jù)拷貝會內(nèi)存中都是會減低速度的。作為一種改進,我們應(yīng)該充分利用LockBits的功能。LockBits中的LockMode中有一種模式為ImageLockMode.UserInputBuffer,該模式下需要用戶先申請內(nèi)存,然后在把圖像數(shù)據(jù)按照相關(guān)格式填充如這個內(nèi)存中。這樣,就可以先定義個數(shù)組,然后把圖像數(shù)據(jù)填充到這個數(shù)組中,就避免了來回拷貝的耗時了,簡單示例代碼如下:

Dim BmpData As New BitmapData

Stride = ((Bmp.Width * 3 + 3) And HFFFFFFFC)

Dim PixleValue(Stride * Bmp.Height) As Byte

Dim Hanlde As GCHandle = GCHandle.Alloc(PixleValue, GCHandleType.Pinned)

BmpData.Scan0 = Hanlde.AddrOfPinnedObject()

跪求vb.net代碼

新建窗口,添加picture控件

利用line()方法畫線

line(開始x坐標(biāo),開始y坐標(biāo))-(結(jié)束x坐標(biāo),結(jié)束y坐標(biāo)),線的顏色,畫線的方式(默認(rèn)為線,B為矩形無填充,BF為填充的矩形)

For i = 1 To 16

Picture1.Line (0, Picture1.Height / 2)-(i * (Picture1.Width / 16), 0), RGB(255, 0, 0)

Picture1.Line (0, Picture1.Height / 2)-(i * (Picture1.Width / 16), Picture1.Height), RGB(255, 0, 0)

Picture1.Line (Picture1.Width, Picture1.Height / 2)-(i * (Picture1.Width / 16), 0), RGB(0, 255, 0)

Picture1.Line (Picture1.Width, Picture1.Height / 2)-(i * (Picture1.Width / 16), Picture1.Height), RGB(0, 255, 0)

Next i

如果要在窗口上畫也可以調(diào)用窗口的line方法即form.line()

VB.net可以開發(fā)小型3D圖形顯示軟件嗎?

可以借助DirectX來編程。免費3D引擎可不好找,一般來說速度比不上硬件加速后的DX,尤其令人頭疼的是一般都沒有針對VB的文檔,LZ有這方面理想的話,自己寫一個吧……

我不得不承認(rèn)在VB上寫DirectX的教程相當(dāng)難找!如果LZ想深入研究三維圖形問題,C++一定要學(xué),就算不能用C++編程,起碼要能把C++程序翻譯成VB程序。

我自己學(xué)會DX編程花了兩三個月(很淺)。編這樣一個程序難度是有點大的。

工具:DirectX9和其針對VB的庫(項目-添加引用。.NET庫里DX庫一般都有),VB不知道現(xiàn)在支不支持DX10以上的版本,不過9絕對夠用了。

思路:一切3D圖形都是由三角形拼成的。矩形挖掉一個圓孔可不是一個方便畫的圖形,我估計至少得有24個三角形。你需要記錄這些點的坐標(biāo),或者干脆把它們寫在文件里,到時讀出來。

這是我的一個老DX程序的不完全的代碼(顯示一個黑乎乎的平面),不一定能編譯,可以參考一下。

Imports Microsoft.DirectX '一定要~

Public Class FormMain

'Direct3D Startup

Dim d3dpp As New Direct3D.PresentParameters 'DX基本參數(shù),例如全屏還是窗口等

Public MyDevice As Direct3D.Device ‘DX基本設(shè)備,畫圖就靠它。

'Matrices

Dim matWorld, matView, matProj As Matrix '世界位置矩陣,攝像機位置矩陣和透視矩陣,數(shù)學(xué)要學(xué)好啊。

'mesh

Public MyPlane as Direct3D.Mesh ’我們的物體

Public VBPlane(3) As Direct3D.CustomVertex.PositionNormalTextured '存放頂點位置的數(shù)組

#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) '創(chuàng)建DX設(shè)備啦!以下兩句請照抄。

MyDevice.SetRenderState(Direct3D.RenderStates.ZEnable, True) ‘Z緩沖

MyDevice.SetRenderState(Direct3D.RenderStates.NormalizeNormals, True)'法線歸一化,請看相關(guān)數(shù)學(xué)書籍。

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 ‘四個點

‘頂點坐標(biāo)信息。

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) ’創(chuàng)建物體

MyPlane.SetVertexBufferData(VBPlane, Direct3D.LockFlags.None) ‘輸入頂點坐標(biāo)數(shù)據(jù)

MyPlane.SetIndexBufferData(PlaneIB, Direct3D.LockFlags.None) ‘輸入索引數(shù)據(jù)

MyPlane.SetAttributeTable(AttrTable) ‘輸入頂點分組屬性表

End Sub

Public Sub Render() ‘調(diào)用它畫圖

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) ‘設(shè)置當(dāng)前攝像機位置矩陣為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) ‘設(shè)置當(dāng)前透視矩陣為MatProj。

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

MyDevice.BeginScene() ‘開始畫

MatWorld = Matrix.Identity ’物體位于原點,不旋轉(zhuǎn)

Device.SetTransform(Direct3D.TransformType.World, MatWorld) ’設(shè)置物體位置

Me.Mesh.DrawSubset(0) ‘畫物體

MyDevice.EndScene() ’結(jié)束

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

End Sub

Public Sub DeleteDeviceObjects() ’結(jié)束程序時放掉資源

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屬于什么編程模式

Net 是一個編程框架。

與函數(shù)庫不同,編程框架指的是一種更高層的抽象,它使使用它的開發(fā)人員可以在不用掌握太多基礎(chǔ)編程理論時(當(dāng)然最好是懂一些)就可以開發(fā)產(chǎn)品。.Net Framework 的意義是指 .Net 框架。.NET Framework 是可以用來開發(fā)應(yīng)用軟件與托管類庫的一個平臺;它為你提供在生成、調(diào)試以及執(zhí)行托管應(yīng)用程序時所需要的編譯器及工具??梢哉f .NET Framework 為你提供了在 Windows 上開發(fā)和運行托管應(yīng)用程序所需的一切條件。因此 .Net 框架也是一種高層次的抽象,它是一種全面支持以面向?qū)ο缶幊痰木幊谭绞絹磉M行開發(fā)的運行于 Windows NT 系列操作系統(tǒng)上的高層編程框架。

之所以說應(yīng)用程序是托管的是因為它們的執(zhí)行過程是由 .NET Framework 管理的。實際上,.NET Framework 通過提供一個可控的運行時環(huán)境來管理這些執(zhí)行過程,此運行時環(huán)境提供眾多的服務(wù),比如在應(yīng)用程序運行時載入應(yīng)用程序、管理內(nèi)存、監(jiān)視和維護安全和資源完整性。

在 .NET(以及Java)之前,應(yīng)用程序未被托管,因為它們不是由可控的運行時環(huán)境來執(zhí)行的。比如之前提到的 C++、VB6 編程語言所提供的編程環(huán)境中,操作系統(tǒng)中沒有其他組件來提供 .Net 提供的這些服務(wù),應(yīng)用程序需要自己管理它們的服務(wù),這在有些時候就導(dǎo)致了錯誤的代碼、安全漏洞,以及數(shù)據(jù)的丟失。

.NET Framework 提供了眾多的工具,比如編譯器、調(diào)試器、編程語言、執(zhí)行引擎(名為 Common Language Runtime,CLR,公共語言運行時),開發(fā)工具,以及大量的預(yù)定義的“功能模塊”類庫。這些類庫被稱作 Framework Class Libraries(FCLs)。

.Net 支持眾多的編程語言,所有的編程語言編寫的代碼都將最終交給 CLR 來執(zhí)行,因此 .Net 是“語言無關(guān)”的。目前微軟推出的用于 .Net 開發(fā)的語言有:VB.NET J# C# F#,現(xiàn)在的 VC++ 也支持托管 .Net 編程。

.Net 編程可應(yīng)用于很多方面,比如桌面應(yīng)用程序、WEB應(yīng)用程序、便攜設(shè)備應(yīng)用程序、游戲開發(fā)、用戶界面開發(fā)、富互聯(lián)網(wǎng)開發(fā)等。

通過安裝一些插件,也可以在 Linux 等操作系統(tǒng)上運行 .Net 程序。

怎么利用VB.NET實現(xiàn)三維繪圖

數(shù)學(xué)上不是有斜二測畫法,算好坐標(biāo)即可畫出

或者用AnyCAD的.Net圖形控件

也可以調(diào)用matlab 實現(xiàn)

新聞名稱:vb.net三維界面編程,vbnet web編程
網(wǎng)頁鏈接:http://muchs.cn/article8/hcieop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、網(wǎng)站排名App開發(fā)、網(wǎng)站改版手機網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)