在线等待,好几天了也没有FW来帮助我啊!如何将正弦函数曲线实现随数值的变化而发生相应的变化?分不多了,20分送上! 再加20分! ( 积分: 20 )

  • 主题发起人 主题发起人 wwei656
  • 开始时间 开始时间
W

wwei656

Unregistered / Unconfirmed
GUEST, unregistred user!
各位FW:兄弟写了个简单的正玄函数图像,原有的功能可以画出三条函数曲线.现想进一步实现新的功能即可以实现随着列表框(ComboBox)数值的变化如:11、12、13、14、15,正玄曲线也发相应的变化.FW们帮我看看代码应该做些什么调整?!使用ComboBox控件,
源代码如下:
procedure TForm1.FormCreate(Sender: TObject);//用于实现ComboBox的赋值.
var
i,n,y,r:integer; //n,y,r代表年月日 i用于循环
begin
n:=1970;
y:=12;
r:=31;
for i:=n to 2008 do
begin
combobox1.Items.Add(inttostr(i));
end;
for i:=1 to y do
begin
combobox2.Items.Add(inttostr(i));
end;
for i:=1 to r do
begin
combobox3.Items.Add(inttostr(i));
end;
end;
procedure TForm1.ComboBox3Change(Sender: TObject);//画正玄曲线,但曲线不随值的变化 而发生相应的变化...
var a,t,ox,oy,pa,pt,i,pnum:integer;
begin
a:=40;t:=100;
ox:=200;oy:=100;
pnum:=1000;
for i:=0 to pnum do
begin
//pa:=round(a*sin(2*pi*i/pnum));
Canvas.Pixels[i,Round(sin(0.273181*(i MOD 23))*20)+181]:=clred;
Canvas.Pixels[i,Round(sin(0.224399*(i MOD 28))*20)+181]:=clred;
Canvas.Pixels[i,Round(sin(0.190399*(i MOD 33))*20)+181]:=clblack;
pt:=round(t*i/pnum);
canvas.Pixels[ox-pt,oy+pa]:=clred;
end;
// a为幅度,t为周期,ox,oy为原点,pa,pt为要描点的相对坐标,
//pnum表示取多少点.都以象素数为单位.
end;
 
各位FW:兄弟写了个简单的正玄函数图像,原有的功能可以画出三条函数曲线.现想进一步实现新的功能即可以实现随着列表框(ComboBox)数值的变化如:11、12、13、14、15,正玄曲线也发相应的变化.FW们帮我看看代码应该做些什么调整?!使用ComboBox控件,
源代码如下:
procedure TForm1.FormCreate(Sender: TObject);//用于实现ComboBox的赋值.
var
i,n,y,r:integer; //n,y,r代表年月日 i用于循环
begin
n:=1970;
y:=12;
r:=31;
for i:=n to 2008 do
begin
combobox1.Items.Add(inttostr(i));
end;
for i:=1 to y do
begin
combobox2.Items.Add(inttostr(i));
end;
for i:=1 to r do
begin
combobox3.Items.Add(inttostr(i));
end;
end;
procedure TForm1.ComboBox3Change(Sender: TObject);//画正玄曲线,但曲线不随值的变化 而发生相应的变化...
var a,t,ox,oy,pa,pt,i,pnum:integer;
begin
a:=40;t:=100;
ox:=200;oy:=100;
pnum:=1000;
for i:=0 to pnum do
begin
//pa:=round(a*sin(2*pi*i/pnum));
Canvas.Pixels[i,Round(sin(0.273181*(i MOD 23))*20)+181]:=clred;
Canvas.Pixels[i,Round(sin(0.224399*(i MOD 28))*20)+181]:=clred;
Canvas.Pixels[i,Round(sin(0.190399*(i MOD 33))*20)+181]:=clblack;
pt:=round(t*i/pnum);
canvas.Pixels[ox-pt,oy+pa]:=clred;
end;
// a为幅度,t为周期,ox,oy为原点,pa,pt为要描点的相对坐标,
//pnum表示取多少点.都以象素数为单位.
end;
 
老兄,你的问题不情楚(至少我不理解),到底从哪里输数据,需要怎么变?
 
数据的得到从前段程序已经体现出来即
procedure TForm1.FormCreate(Sender: TObject);//用于实现ComboBox的赋值.
var
i,n,y,r:integer; //n,y,r代表年月日 i用于循环

n:=1970
for i:=n to 2008 do
begin
combobox1.Items.Add(inttostr(i));
end;
曲线的改变是这样的----即当在combox控件中选择"1970"这个数据时在界面上得到一个正玄曲线;当我在选择另一个数据里如"1982"这时正玄曲线在界面上得到的是一条新的正玄曲线.不知我说明白了没有?!QQ:328844156
 
那你的ComboBox3Change事件中没有取ComboBox3内的值呀
 
是的.我就是不知道应该如何取ComboBox3内的值,才能达到我的目标.我也觉得我的代码有点不对劲.但想不出来应该如何改才行!
 
你的哪个值要变化呀?例:
A := StrToInt(ComboBox3.Text)
 
是i.因为I就是一个月里的31天.公式里就是天数对23、28、33求余。。。。。
 
那不行,你的设计问题可大了,如果从ComboBox3读i只能画一个点。
 
在线等待!!!FW们看看应该如何做才能达到俺的目标?!给个帮助!怎么没有FW们给予帮助了!分不够再加20分!急急急.......怎么没有人回答呀!请大家给予帮助!
 
结贴吧!散分了.....
 
后退
顶部