卍刘军卍 發表於 2008-3-15 18:15:18

delphi 正弦曲线图

本实例要在窗体上直接绘制正弦曲线,为了防止窗口切换的过程中会输出不完整的图形,因此绘制图形的关键代码都放在了窗体的OnPaint过程中,代码如下:
<br><br>procedure&nbsp;TForm1.FormPaint(Sender:&nbsp;TObject);
<br>var
<br> x:&nbsp;Integer;
<br> y,a:&nbsp;Double;
<br>begin
<br> Canvas.Pen.Width:=3;
<br> Canvas.MoveTo(0,Trunc(self.ClientHeight/2));
<br> for&nbsp;x&nbsp;:=&nbsp;0&nbsp;to&nbsp;self.ClientWidth&nbsp;do
<br> begin
<br>  a&nbsp;:=&nbsp;(x/self.ClientWidth)&nbsp;*&nbsp;2&nbsp;*&nbsp;Pi;
<br>  y&nbsp;:=&nbsp;Sin(a);
<br>  y&nbsp;:=&nbsp;(1-y)*self.ClientHeight/2;
<br>  Canvas.LineTo(Trunc(x),&nbsp;Trunc(y));
<br> end;
<br>end;&nbsp;
<br><br>  程序首先设置了窗体的Canvas对象中画笔的宽度,并且把绘图的起点移动到了窗体中(0,Trunc(self.ClientHeight/2))的位置。然后通过一个循环中的a:=&nbsp;(x/self.ClientWidth)*2*Pi语句将一个正弦周期内的角度值转换为弧度值,并且把正弦计算后的结果存储在变量y中。最后,循环中的Canvas.LineTo(Trunc(x),&nbsp;Trunc(y))语句就会在窗体上绘制出连续的正弦曲线。
<br><br>  程序代码如下:
<br><br>unit&nbsp;Unit1;
<br><br>interface
<br><br>uses
<br><br>Windows,&nbsp;Messages,&nbsp;SysUtils,&nbsp;Variants,&nbsp;Classes,&nbsp;Graphics,&nbsp;Controls,&nbsp;Forms,
<br><br>Dialogs,&nbsp;ExtCtrls,&nbsp;StdCtrls;
<br><br>type
<br> TForm1&nbsp;=&nbsp;class(TForm)
<br> procedure&nbsp;FormPaint(Sender:&nbsp;TObject);
<br> procedure&nbsp;FormResize(Sender:&nbsp;TObject);
<br> procedure&nbsp;FormCreate(Sender:&nbsp;TObject);
<br>private
<br> {&nbsp;Private&nbsp;declarations&nbsp;}
<br>public
<br> {&nbsp;Public&nbsp;declarations&nbsp;}
<br>end;
<br><br>var
<br> Form1:&nbsp;TForm1;
<br> implementation
<br> {$R&nbsp;*.dfm}
<br> procedure&nbsp;TForm1.FormPaint(Sender:&nbsp;TObject);
<br>var
<br> x:&nbsp;Integer;
<br> y,a:&nbsp;Double;
<br>begin
<br> Canvas.Pen.Width:=3;
<br> Canvas.MoveTo(0,Trunc(self.ClientHeight/2));
<br> for&nbsp;x&nbsp;:=&nbsp;0&nbsp;to&nbsp;self.ClientWidth&nbsp;do
<br> begin
<br>  a&nbsp;:=&nbsp;(x/self.ClientWidth)&nbsp;*&nbsp;2&nbsp;*&nbsp;Pi;
<br>  y&nbsp;:=&nbsp;Sin(a);
<br>  y&nbsp;:=&nbsp;(1-y)*self.ClientHeight/2;
<br>  Canvas.LineTo(Trunc(x),&nbsp;Trunc(y));
<br> end;
<br>end;
<br><br>procedure&nbsp;TForm1.FormResize(Sender:&nbsp;TObject);
<br> begin
<br>  Refresh;
<br>end;
<br><br>procedure&nbsp;TForm1.FormCreate(Sender:&nbsp;TObject);
<br>begin
<br> self.DoubleBuffered:=true;
<br> //防止图形闪烁
<br>end;
<br>end.&nbsp;
<br><br>  保存文件,然后按F9键运行程序。在程序运行过程中,会自动在窗体上绘制正弦曲线,运行结果如图1所示。
<br><br>
<br><br>图1&nbsp;程序运行结果
<br><br>
<br>  通过本程序的学习,不但可以绘制正弦曲线,也可以绘制余弦曲线、正切曲线等各式各样的曲线,方便科学研&nbsp;
                           
                            <div class="art_xg">
                              <b>您可能感兴趣的文章:</b><ul><li>delphi程序全屏显示无标题栏覆盖整个屏幕(适合屏保)</li><li>delphi实现将BMP格式图形转化为JPG格式图形的方法</li><li>delphi实现保存和读取图片的方法</li><li>Delphi实现图像文本旋转特效完整实例代码</li><li>Delphi实现图片滚动切换的完整实例代码</li><li>在Delphi实现在数据库中存取图像的图文演示无错</li><li>Delphi实现截屏存盘的方法</li></ul>
                            </div>

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: delphi 正弦曲线图