1。画好圆圈后要闪烁3次
2。要缓慢的画圆圈,也就是说要有一个画圆的过程

解决方案 »

  1.   

    呵呵,挺浪漫的么。
    估计不难,闪烁,简单的,逐步画也容易。
    1、闪烁
    如果你用API画,那么闪烁就是重复画,用相同的画笔再画一次,他就没了。
    如果你用PICBOX等做接收者(画布),用VB的画图函数画,而且将PIC上的图形“实化”(AUTOREDRAW=1),那么闪烁PICBOX就可以。
    2、逐步画
    逐步画,用API可以容易实现,就是说先画1段弧,然后再接着它画,那不就逐步画了么。
    用PICBOX做画布(当然了,你在里面设置一个图片就可以),可以用“遮罩”,啥意思呢,就是
    用一个PICBOX或几个PICBOX先把不要别人看见的部分盖起来,然后通过逐步移动它们,让被遮的部分逐渐露出来就可以了。当然你需要设置遮罩PICBOX的Appearance 属性为2D,BorderStyle 属性为0(无边框),BackColor属性与被遮罩的PICBOX相同。最后建议你用API做,不难可以使用Arc,ArcTo,Ellipse等API函数。你可以参考其具体API声明
      

  2.   

    给你一个建议,如果是我写这个程序,我会用PICBOX做画布,如果你设置AutoRedraw=1,可以用隐藏再出现的办法闪烁,如果你设置AutoRedraw=0,那么用刷新方法刷新时,图象就没了。最好设置AutoRedraw=1,否则当别的窗体覆盖了你的窗体,那被覆盖的部分图形也就没了。
      

  3.   

    1。画好圆圈后要闪烁3次
    圆的前景色背景色改到一致在改回去(画好圆后再用前/背景色快速绘制多次),用Timer反复三次2。要缓慢的画圆圈,也就是说要有一个画圆的过程
    用三角函数与绘制图形的API结合使用,Timer控制
      

  4.   

    我学VB还没有过十个小时,API不懂,希望谁能给我个工程看看呀.
    [email protected]
      

  5.   

    8年前(98年的样子),用BASIC做了一个的,我记得很容易的,多捉摸一下.
      

  6.   

    呵呵,没那么困难。
    很晚了不写了,给你个示例,了解一下这API的用法。我刷的代码,转载请保留原作者信息
    【VB声明】
      Private Declare Function Arc Lib "gdi32" Alias "Arc" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long【说明】
      象注解中那样画一个圆弧。(X1,Y1)和(X2,Y2)定义了椭圆的一个范围(约束)矩形。从矩形中心点到点(X3,Y3)的一条线段与椭圆的交点标志着圆弧的起点。而到(X4,Y4)的一条线与椭圆的交点则标志着圆弧的终点。ArcTo函数会将当前画笔位置设为弧的终点,而Arc函数则不会对当前的画笔位置造成影响 【返回值】
      Long,非零表示成功,零表示失败 【备注】
      在win16和win95中,约束矩形的宽度和高度必须在3——32766间。绘图方向肯定是逆时针方向。
      在win nt中:绘图方向由SetArcDirection函数决定。默认为逆时针方向【参数表】
      hdc ------------  Long,一个显示场景的句柄  X1,Y1 ----------  Long,指定围绕椭圆的一个矩形的左上角位置  X2,Y2 ----------  Long,指定围绕椭圆的一个矩形的右下角位置  X3,Y3 ----------  Long,指定圆弧起点  X4,Y4 ----------  Long,指定圆弧终点
    以下是程序代码
    Private Declare Function Arc Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long
    Private Sub Form_Load()
        'KPD-Team 1998
        'URL: http://www.allapi.net/
        'E-Mail: [email protected]
        'Set graphical mode to persistent
        Me.AutoRedraw = True
        'Draw to arcs
        Arc Me.hdc, 0, 0, 100, 100, 100, 50, 50, 100
        Arc Me.hdc, 49, 49, 149, 149, 49, 99, 99, 49
    End Sub
      

  7.   

    刚开始就接触API太难了,你看这个是你所需要的效果么?
    --------------------------------------
    '*************************************************************************
    '**程 序 名:
    '**输    入:
    '**输    出:
    '**功能描述:显示画圆的过程,并且出现闪烁的圆
    '**全局变量:
    '**调用模块:
    '**作    者:hohairen
    '**日    期:2003年06月23日
    '**修 改 人:
    '**日    期:
    '**版    本:
    '**备    注:窗体上添加一个按钮和两个时间控件
    '*************************************************************************Option Explicit
    Dim flag As Integer
    Dim n As Integer
    Dim PI As Single
    Dim x0 As Single, y0 As Single, r0 As Single
    Dim x As Single, y As Single, angle As Single
    Private Sub Command1_Click()
    PI = 3.14159265
    x0 = 2000                    '圆心的坐标
    y0 = 2000
    r0 = 1000
    Timer1.Enabled = True
    End SubPrivate Sub Timer1_Timer()
    angle = angle + PI / 200    '控制圆的细腻程度,Timer2的Interval属性控制画圆的快慢
    If angle >= 2 * PI Then
    angle = 0
    Timer1.Enabled = False
    Timer2.Enabled = True
    End If
    x = x0 + r0 * Cos(angle)     '计算圆上各点的坐标
    y = y0 + r0 * Sin(angle)
    Form1.PSet (x, y), vbRed     '采用描点画圆法画圆
    End SubPrivate Sub Timer2_Timer()
    Dim r As Integer, g As Integer, b As Integer
    Form1.Cls                    '将窗体上原来的图象清掉
    If n = 6 Then                '控制闪烁次数,闪烁n/2次,这里闪烁3次
    Timer2.Enabled = False
    End If
    If flag = 1 Then
    flag = 0
    Circle (x0, y0), r0, vbRed   '采用在原图上覆盖的方法实现闪烁
    n = n + 1
    Else
    flag = 1
    Circle (x0, y0), r0, vbBlue
    n = n + 1
    End If
    End Sub
    -----------------------------------方法可能繁琐了一点,呵呵