想在PaintBox上画正弦波,或者其他波形,如何实现?
最好能给出例子代码。谢谢大家。
最好能给出例子代码。谢谢大家。
解决方案 »
- 超超简单问题 ,一时给忘了、。。。。。。。
- ++++++++通过ODAC能否实现数据库导入/导出功能++++++++++
- 高分跪地!!求XP样式的分页控件!!!!!!!!!!!!
- 打开excel表的问题
- ring0问题
- GTpicture对象的高度有限制吗?我在实践中发现一个奇怪的现象,请大家进来瞧瞧,并发现意见
- 有没有控件!
- Delphi做的ActiveX为何在本机的浏览器中能用,而在其他机器上出错????/
- 如何屏蔽Alt+F4???急急急!!!
- 请问类为何在create就错了 ,代码请看
- 请问谁有图像模型匹配的源程序吗,可以给我发一份吗?急需,来不及自己做了,请各位帮帮忙哦!!
- 谁有TOutLookBar的帮助文档~~~分不够再加!
The value x must be in radians. To convert from degrees to radians use DegToRad. For example, sin(30 degrees) in Delphi would be sin(DegToRad(30))= 0.5.FASTEST Sin, Cos, Tan and CTan functions.
http://delphi.icm.edu.pl/ftp/d30free/sincosx.zip Tips and Tricks from Delphi in a NutShell, p. 341-342:Integers and Variant arguments are automatically converted to floating-point.
To convert an Int64 argument, add 0.0.
If X is a quiet NaN, the result is X.
IF X is a signaling NaN, sin reports EInvalidOp.
John Herbster's UseNet Post about since function for large numbers, such as sin(1e18)
FPoints: array [0..144] of TPoint; {...} procedure TForm1.CalculateGraph;
var
xRangePixels, yRangePixels: Integer;
origin: TPoint;
radian, interval: Double;
i: Integer;
begin
{
We calculate the sinus curve in the interval -2Pi..+2Pi,
with a resolution of 4Pi/144, as a series of points that
will be connected by a polyline. The graph is scaled to fit into
the paintbox. The origin of the coordinate system is the center
of the paintbox. The default windows coordinate system is inverted,
the Y axis points downward!
}
xRangePixels := (paintbox1.Width - 2) div 4; { pixels in Pi }
yRangePixels := (paintbox1.Height - 2) div 2; { pixels in 1 }
origin := Point(paintbox1.Width div 2, paintbox1.Height div 2);
radian := -2.0 * Pi;
interval := 4.0 * Pi / 144.0;
for i := 0 to High(FPoints) do
begin
FPoints[i].X := origin.x + Round(radian * xRangePixels / Pi);
FPoints[i].Y := origin.y - Round(sin(radian) * yRangePixels);
radian := radian + interval;
end;
end; procedure TForm1.PaintBox1Paint(Sender: TObject);
var
origin: TPoint;
xRangePixels, yRangePixels: Integer;
begin
with PaintBox1.Canvas do
begin
{ Fill background in white }
Brush.Color := clBtnFace;
Brush.Style := bsSolid;
Fillrect(paintbox1.BoundsRect); { Paint a coordinate cross }
origin := Point(paintbox1.Width div 2, paintbox1.Height div 2);
Pen.Color := clBlack;
Pen.Style := psSolid;
Pen.Width := 1;
MoveTo(1, origin.Y);
LineTo(paintbox1.Width - 1, origin.y);
MoveTo(origin.x, 1);
LineTo(origin.x, paintbox1.Height - 1); { Paint some ticks and label the axis }
Font.Name := 'Symbol';
Font.Size := 8;
Font.Color := clBlack;
xRangePixels := (paintbox1.Width - 2) div 4; { pixels in Pi }
yRangePixels := (paintbox1.Height - 2) div 2; { pixels in 1 } { X axis }
MoveTo(origin.x - 2 * xRangePixels, origin.y - 4);
LineTo(origin.x - 2 * xRangePixels, origin.y + 4);
TextOut(origin.x - 2 * xRangePixels + 2, origin.y + 2, '-2p');
MoveTo(origin.x - xRangePixels, origin.y - 4);
LineTo(origin.x - xRangePixels, origin.y + 4);
TextOut(origin.x - xRangePixels + 2, origin.y + 2, '-p');
MoveTo(origin.x + xRangePixels, origin.y - 4);
LineTo(origin.x + xRangePixels, origin.y + 4);
TextOut(origin.x + xRangePixels - 2 - TextWidth('p'), origin.y + 2, 'p');
MoveTo(origin.x + 2 * xRangePixels, origin.y - 4);
LineTo(origin.x + 2 * xRangePixels, origin.y + 4);
TextOut(origin.x + 2 * xRangePixels - 2 - TextWidth('2p'), origin.y + 2, '2p');
{ Y axis }
MoveTo(origin.x - 4, origin.y - yRangePixels);
LineTo(origin.x + 4, origin.y - yRangePixels);
TextOut(origin.x + 4, origin.y - yRangePixels, '1.0');
MoveTo(origin.x - 4, origin.y - yRangePixels div 2);
LineTo(origin.x + 4, origin.y - yRangePixels div 2);
TextOut(origin.x + 4, origin.y - (yRangePixels + TextHeight('1')) div 2, '0.5');
MoveTo(origin.x - 2, origin.y + yRangePixels div 2);
LineTo(origin.x + 2, origin.y + yRangePixels div 2);
TextOut(origin.x + 3, origin.y + (yRangePixels - TextHeight('1')) div 2, '-0.5');
MoveTo(origin.x - 2, origin.y + yRangePixels);
LineTo(origin.x + 2, origin.y + yRangePixels);
TextOut(origin.x + 3, origin.y + yRangePixels - TextHeight('1'), '-1.0'); {Paint the graph }
Pen.Color := clBlue;
Polyline(FPoints);
end;
end; procedure TForm1.FormResize(Sender: TObject);
begin
CalculateGraph;
end; procedure TForm1.FormCreate(Sender: TObject);
begin
CalculateGraph;
end;
http://www.skyec.com/U_View_cpxz_detail.asp?ProductID=17