vb点虐 画正弦波 word画正弦波

大佬们~VisualStudio中vb点虐 如何画三角函数图像?

VB系统的坐标原点在左上角,X轴的正方向是水平向右,而Y轴的正方向是垂直向下。所以,要绘制三角函数的曲线,自己可以通过改变点坐标的方法来实现,当然,VB.NET提供了相应的方法可以来实现坐标变换,也可以通过VB.Net的Graphics类提供的平移、旋转等转换来实现。

站在用户的角度思考问题,与客户深入沟通,找到北仑网站设计与北仑网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:做网站、网站设计、企业官网、英文网站、手机端网站、网站推广、域名注册虚拟主机、企业邮箱。业务覆盖北仑地区。

下面是我通过自己变换实现的示例,提供参考;我的环境是VB.NET 2010

Imports System.Math

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

  '1,获得一个Graphics对象

  Dim MyGraphics As Graphics

  MyGraphics = PictureBox1.CreateGraphics

  '2,定义一个Pen对象,用于绘制图形(轮廓线)

  Dim MyPen As New Pen(Color.Black, 1)

  '3,定义一个Brush对象,用于填充图形(如果需要填充的话)

  Dim MyBrush As New SolidBrush(Color.Orange)

  MyGraphics.DrawLine(MyPen, 0, 200, 700, 200)

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

  '1,获得一个Graphics对象

  Dim MyGraphics As Graphics

  MyGraphics = PictureBox1.CreateGraphics

  '2,定义一个Pen对象,用于绘制图形(轮廓线)

  Dim MyPen As New Pen(Color.Black, 1)

  '3,定义一个Brush对象,用于填充图形(如果需要填充的话)

  Dim MyBrush As New SolidBrush(Color.Orange)

  '声明横向和纵向比例变量

  Dim Heng As Integer = 20

  Dim Zong As Integer = 50

  '先获得正弦值,保存到点坐标数组

  Dim MyPoints(700) As Point

  Dim i As Integer

  For i = 0 To 700

      MyPoints(i) = New Point(i * Heng, 200 + Sin(i) * Zong)

  Next

  '采用绘制光滑线连接点的方式绘制曲线

  MyGraphics.DrawCurve(MyPen, MyPoints)

End Sub

End Class

显示的效果图:

怎么在VB.NET中画.wave文件的波形图

代码原理如下:

读取.wave

播放.wave

在播放的同时根据波形数据生成图形显示出来。

VB点虐 绘图具体如何设置双缓冲

VB.NET画图是不能设置双缓冲的,双缓冲是指窗体,从来没说是针对控件。

不用graphic.clear清理重画就不会闪烁。你可以先把容器删了再重新建立一个再去画。

简单举例:

Graphics g;

Pen p;

Panel pl;

构造函数初始化:

p=new Pen(Color.Red,2);

pl=panel1;

造成闪烁的画法:

g=pl.CreateGraphics();

g.Clear(SystemColor.ButtonFace);

//.....画新的

不会闪烁的办法:

this.Controls.ReMoveAt(panel1);

pl=new Panel();

pl.Name="panel1";

//....创建容器控件

this.Controls.Add(pl);

//继续画

VB正弦曲线怎么画?

在写代码之前,我们需要知道标准的正弦函数(以下称为sin函数),最大值是1,最小值是-1,几个关键点是0,±n*π/2,±n*π,而且它是周期性的,我们不可能让VB真的无限画下去,只需要在可见的窗体上绘制就行了。说sin的概念是为了确定坐标系,因为sin最大值也只有1,所以我们要放大它的值,以便显示最好的效果,如果不确定坐标系,可能画出来一条近似直线的波浪线。

首先,在Form_Load的事件里面写好坐标系,如果自己逻辑好这步确实可以不做,但是不做的结果就是需要写代码的人自己考虑偏移量,所以定好坐标系之后,写的函数就简单直观许多了。自定义坐标系的方法是:scale(x1,y1)-(x2,y2).

第二,开始写sin的函数,可以写在模块里面,也可以直接在窗体代码区写,写模块是为了以后调试方便,如果只是为了显示标准的sin函数,在窗体写也可以。定义几个双精度付典型的变量y,x  ,函数关系是y=sin(x)

第三,绘制一个点,当然是sin上的点。第二步已经获得了x和y,正好是横坐标和纵坐标,我们为了让曲线平滑一些,可以Line方法,因为真的画点十分吃内存,比较卡,也就是我们画线不画点(很短很短的先近似于点),方法是Line (x1,y1)-(x2,y2)

最后,套用循环语句输出,其实说这是最后也不太合适,这部其实是套在第三步和第二步之外的,也就是确定x轴显示区间和曲线平滑度的作用。

'代码

Private Sub Form_Load()

Me.AutoRedraw = True            '开启自动重绘

Form1.Height = 2400             '自定义窗体高度

Form1.Width = 8000              '自定义窗体宽度

Scale (-16, 1.2)-(16, -1.2)     '自定义坐标系

Line (-16, 0)-(16, 0)           '绘制X轴

Line (0, 1.2)-(0, -1.2)         '绘制Y轴

End Sub

Private Sub Command1_Click()

Line (-16, Sin(-16))-(-16, Sin(-16))  '画起始点

Dim x As Double                 '定义x

Dim y As Double                 '定义y

For i = -16 To 16 Step 0.1      'step越小,曲线越平滑

x = i

y = Sin(x)

Line -(x, y)                '连接上一个点

Next i

End Sub


分享文章:vb点虐 画正弦波 word画正弦波
转载来于:http://csdahua.cn/article/ddsoccs.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流