vb.net画平滑的线 vb实现简易绘画

vb怎么画平滑的直线?

电脑屏幕是由许多点组成的,所以在屏幕上直接画出的直线,除了完全水平或垂直的是真正的直线外,其他都肯定是边缘带锯齿形状的。要消除这种锯齿状,就要在线段边缘设置一些过渡色,使线段看起来平滑一些(但这仍然不是真正的直线),而这显然已经超出了VB本身的能力范围了,采用其他第三方控件或API的话,代码会复杂很多。如果你只是想自己编程玩玩的,就这样将就将就了,别要求太高。如果你想做出有实用价值的作品,就要用真正的图片来做表盘和指针,而不要用VB本身的绘图命令。

创新互联公司专业为企业提供同仁网站建设、同仁做网站、同仁网站设计、同仁网站制作等企业网站建设、网页设计与制作、同仁企业网站模板建站服务,十余年同仁做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

最后再说一次:至少在目前的硬件技术条件下,在电脑屏幕上除了完全水平或垂直的直线,你是无法画出你想象中的那种完全平滑的直线的,不管用什么软件和技术(包括楼上说的gdi+);另外,屏幕的点及点距越小,画出的直线也就越接近平滑,比如你这个图如果是画在800*480以上分辨率的手机屏幕上,你会发现情况会大大改观!

如何让vb line画的曲线更圆滑

要使用点画线,而不是line来画线。这样的曲线就会很圆滑了;

点的使用是Pset函数

vb和vb.net 在picturebox 中绘制直线如何绘制

绘图是系统内部操作的,不需要懂原理

方法就在那里,只有会用和不会用,你的代码告诉它绘制,它就会绘制。它(方法)究竟如何去绘制的并不是重点,反正它会绘制。

drawline(绘线)方法很简单,第一个参数是pen,它确定线条的颜色、宽度和样式。第二、第三个参数都是point类型,确定两个点的位置,绘制直线。

VB中画平滑曲线的问题

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

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

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

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

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

vb怎么将多个点用光滑曲线连起来,并画出这条曲线的平均线

用贝塞尔曲线画就可以了

Private Type POINTAPI

x As Long

y As Long

End Type

Private Declare Function PolyBezierTo Lib "gdi32.dll " (ByVal hdc As Long, lppt As POINTAPI, ByVal cCount As Long) As Long

Private Sub Form_Paint()

Dim pts(0 To 6) As POINTAPI

'set the coördinates

pts(0).x = 22: pts(0).y = 33

pts(1).x = 66: pts(1).y = 55

pts(2).x = 177: pts(2).y = 88

pts(3).x = 199: pts(3).y = 111

pts(4).x = 299: pts(4).y = 222

pts(5).x = 80: pts(5).y = 333

PolyBezierTo Me.hdc, pts(0), 6

End Sub

平均线 ??是个什么线????求出平均值后话直线吗?

那就lineto好了

Private Type POINTAPI

x As Long

y As Long

End Type

Private Declare Function PolyBezierTo Lib "gdi32.dll " (ByVal hdc As Long, lppt As POINTAPI, ByVal cCount As Long) As Long

Private Sub Form_Paint()

Dim pts(0 To 6) As POINTAPI

Dim pt(0 To 6) As POINTAPI

'set the co?rdinates

pts(0).x = 22: pts(0).y = 33

pts(1).x = 66: pts(1).y = 55

pts(2).x = 177: pts(2).y = 88

pts(3).x = 199: pts(3).y = 111

pts(4).x = 299: pts(4).y = 222

pts(5).x = 80: pts(5).y = 333

For n = 1 To 6

pt(n).x = (pts(n).x + pts(n - 1).x) / 2

pt(n).y = (pts(n).y + pts(n - 1).y) / 2

Next n

PolyBezierTo Me.hdc, pt(0), 6

PolyBezierTo Me.hdc, pts(0), 6

End Sub


当前文章:vb.net画平滑的线 vb实现简易绘画
标题网址:http://azwzsj.com/article/dosedoi.html