在考生文件夹下有一个工程文件sjt5.vbp,在其窗体中有一个实心圆。程序运行时。当用鼠标左键单击窗体任何空白位置时,实心圆则向单击位置直线移动;若用鼠标右键单击窗体,则实心圆停止移动。窗体文件中已经给出了全部控件,但程序不完整。 要求:请去掉程序

admin2020-04-08  56

问题 在考生文件夹下有一个工程文件sjt5.vbp,在其窗体中有一个实心圆。程序运行时。当用鼠标左键单击窗体任何空白位置时,实心圆则向单击位置直线移动;若用鼠标右键单击窗体,则实心圆停止移动。窗体文件中已经给出了全部控件,但程序不完整。
    要求:请去掉程序中的注释符,把程序中的?改为正确的内容,使其能正确运行,不能修改程序的其他部分和控件属性。最后将修改后的文件按原文件名存盘。

选项

答案【操作步骤】 步骤1:打开本题工程文件。 步骤2:打开代码编辑窗口,去掉程序中的注释符,将问号改为正确的内容。 参考答案(阴影部分是需考生填入的内容) Dim stepy As Integer ′纵向移动增量 Dim stepx As Integer ′横向移动增量 Const LEFT BUTTON=1 Private Sub Form_MouseDown(Button As Integer,Shift As Integer,x As Single,y As Single) Dim x0 As Integer,y0 As Integer, a As Single t radius As_Integer radius=Shapel.Width/2 ′圆的半径 I f Button=LEFT BUTTON Then ′单击鼠标左键移动 x0=Shapel.Left+radius′圆心的x坐标 y0=Shapel.Top+radius′圆心的v坐标 If X=x0 Then′垂直移动 stepy=Sgn(y—y0)′50 stepx=0 E1se′倾斜移动 a=(y—y0)/(x—x0) ′ 斜率 stepx=Sgn(x—x0)*50 stepy=a*stepx ′通过stepx确定stepy的值 If Abs(stepy) >Abs (stepx)Then stepy=Sgn(y—y0)* 50 Stepx=stepy/a End If End If Timerl.Enabled=True′单击鼠标左键则触发Timer事件 E1Se Timerl.Enabled=False′单击鼠 标右键则停止Timer事件 End If End Sub Private Sub Timerl_Timer() Shapel.Move Shapel.Left+stepx, Shapel.Top+stepy′移动shapel End Sub 步骤3:调试并运行程序,关闭程序后按题目要求存盘。 【易错提示】语句比较复杂,要耐心地读懂程序,然后再做就很简单了。

解析 通过鼠标左键单击位置的坐标及圆心的坐标确定一条直线,并沿着这条直线移动,通过计算这条直线的斜率,得知水平位移和竖直位移,再通过形状控件的Move方法、Left和Top属性实现形状控件位置的移动。
转载请注明原文地址:https://kaotiyun.com/show/RNTp777K
0

最新回复(0)