重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

vb.net画图软件 vb绘图控件

VB.net中如何画图?

分类: 电脑/网络 程序设计 其他编程语言

创新互联公司是专业的余杭网站建设公司,余杭接单;提供成都网站建设、网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行余杭网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

问题描述:

VB6中的form1.circle (100,200),rgb(0,255,0)的语句如何在VB中使用啊?

急用啊!!!!!!!!

解析:

VB与VB不同。

VB已经有专门绘图的类。

可以定义笔刷然后用Drawing类中的方法绘制。

Private Sub DrawEllipse()

Dim myPen As New System.Drawing.Pen(System.Drawing.Color.Red)

Dim formGraphics as System.Drawing.Graphics

formGraphics = Me.CreateGraphics()

formGraphics.DrawEllipse(myPen, New Rectangle(0,0,200,300))

myPen.Dispose()

formGraphics.Dispose()

End Sub

Private Sub DrawRectangle()

Dim myPen As New System.Drawing.Pen(System.Drawing.Color.Red)

Dim formGraphics as System.Drawing.Graphics

formGraphics = Me.CreateGraphics()

formGraphics.DrawRectangle(myPen, New Rectangle(0,0,200,300))

myPen.Dispose()

formGraphics.Dispose()

End Sub

vb.net怎样在当前已打开的AutoCAD画图? 最好有个判断语句, 如果CAD已打开, 在当前画图; 如果没有, 则打开

Private Function isopen() As AutoCAD.AcadApplication

Try

dim CADapp_temp AutoCAD.AcadApplication = GetObject(, "AutoCAD.Application")

return CADapp_temp

Catch ex As Exception

Return Nothing

End Try

End Function

'调用上面的函数,如果为nothing表示没有打开,否则打开并返回对象

用vb.net2010编画图功能

.net2005很容易解决这个问题,.net2010没用过,你还蛮赶时髦的嘛...都用2010了..如果.net2005你需要的话..加我为好友....我可以写几个函数给你...

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画图软件 vb绘图控件
本文路径:http://cqcxhl.cn/article/doceios.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP