包含vb.net曲线平滑处理的词条

vb.net绘制曲线图

。net  其实还是很好绘制图形的

成都创新互联公司-专业网站定制、快速模板网站建设、高性价比广昌网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式广昌网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖广昌地区。费用合理售后完善,10年实体公司更值得信赖。

你可以看下 Graphics  类

Dim d As New Bitmap(Me.Width, Me.Height)  ‘一个图片吧

  Dim g As Graphics = Graphics.FromImage(d)’绘制  准备在这个图片是进行

然后  就是你绘制的东西了

线 就是   g.DrawLine()

圆 弧度  就用  g.DrawArc(Pens.Black, New Rectangle(0, 0, 400, 200), 0, 360)

复杂的就是      g.DrawBezier()

等  如果你用的是 VS的  编译  上面都有详细的参数说明

Dim d As New Bitmap(Me.Width, Me.Height)

Dim g As Graphics = Graphics.FromImage(d)

g.DrawArc(Pens.Black, New Rectangle(0, 0, 200, 200), 0, 360)

g.DrawLine(Pens.Red, New Point(0, 0), New Point(200, 200))

g.DrawLines(Pens.Green, New Point() {New Point(0, 0), New Point(50, 40), New Point(50, 80), New Point(90, 70), New Point(100, 400)})

g.DrawBezier(Pens.Yellow, New Point(0, 100), New Point(0, 0), New Point(200, 0), New Point(200, 200))

g.Dispose()

Me.BackgroundImage = d

VB中画平滑曲线的问题

先分析你的曲线特征,然后选择合适的函数进行拟合。

实现曲线拟合的方法大致可以分为两大类:

1.插值法,给定一组精确的离散数据点,构造一个函数,使其严格依次通过每个数据点,满足光滑的要求。常用的而又多项式插值,抛物样条曲线和三次样条曲线等。

2.逼近法,给定一组具有误差的离散数据点,构造一个函数,使其整体上接近这些数据点,而不必点点通过他们。常用的逼近法有最小二乘法,B样条曲线等

看你的曲线要求选择,找到合适的函数曲线自然就光滑了

VB.net 高次曲线拟合并绘图

构造Pen的时候可以指定粗细,如果你指定为1,并且放大了10倍,最后就成10了,所以你指定小点就行了,比如 Dim p As New Pen(Color.Black, 0.01) 最终绘制的线的粗细不会小于1

vb中样条曲线问题

不引用的话,VB做不到。这事情要看VB的版本。如果是6.0的话,要去网上下载GDIPLUS的库文件或者自己声明GDI+的API。如果是VB.NET的话,VB自带GDI+,但是也可以下载GDIPLUS库来用。如果不知道去哪里下载,我下载有,你可以问我要。我使用VB6.0。下载gdiplus以后,在VB里面引用这个库,注意要选择“所有文件”才能看到这个库。gdi+里面的path功能可以实现样条:Private

TOKEN

As

Long'GDI+对象

Private

Graphics

As

Long'画板

Private

Sub

InitGDIPlus()

'初始化GDI+

Dim

uInput

As

GdiplusStartupInput

uInput.GdiplusVersion

=

1

If

GdiplusStartup(TOKEN,

uInput)

Ok

Then

'初始化错误

MsgBox

"GDI+

初始化错误。程序即将关闭。",

vbCritical,

"InitError"

End

End

If

GdipCreateFromHDC

Me.hDC,

Graphics'创建画板

GdipSetSmoothingMode

Graphics,

SmoothingModeAntiAlias'设置为反锯齿

End

SubPrivate

Sub

TerminateGDIPlus()

GdipDeleteGraphics

Graphics

'释放graphics占用的内存

GdiplusShutdown

TOKEN

'关闭GDI+

End

SubPrivate

Sub

Form_Load()

InitGDIPlus

'初始化End

SubPrivate

Sub

Command1_Click()

Dim

path

As

Long

Dim

m(3)

As

POINTF

'以下是坐标,你可以自由改变

m(0).x

=

m(0).y

=

m(1).x

=

10

m(1).y

=

100

m(2).x

=

20

m(2).y

=

3

m(3).x

=

500

m(3).y

=

100

Dim

pen

As

Long

GdipCreatePen1

HFF000000,

2,

UnitPixel,

pen

'创建画笔,用来画出样条

GdipCreatePath

FillModeAlternate,

path

'创建path

GdipAddPathBeziers

path,

m(0),

4

'创建样条'Count是说坐标的个数,points只能传递数组的第一个元素,不能传递数组。

GdipDrawPath

Graphics,

pen,

path

'画出样条

GdipDeletePen

pen

'删除画笔

GdipDeletePath

path

'删除样条End

SubPrivate

Sub

Form_Unload(Cancel

As

Integer)

TerminateGDIPlus

'删除GDI+

End

Sub

如何对这个曲线进行平滑处理

可以使用移动平均法,对前n个数求和取平均赋给下一个数,依次移动直到数据末尾,最后形成一新的数组z,最后plot(x,z)就行了,不过要注意n的取值要合适,推荐先取5-10之间的数吧。


名称栏目:包含vb.net曲线平滑处理的词条
当前链接:http://pwwzsj.com/article/phpiid.html