| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4605 人关注过本帖
标题:VB中给圆填充颜色的算法怎么写
取消只看楼主 加入收藏
落日幻影
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2013-10-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
VB中给圆填充颜色的算法怎么写
这是我画的一个圆  
   Dim a As Single
   Dim b As Single

Private Sub picdraw_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
   a = X
   b = Y
End Sub

Private Sub picdraw_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
    Picdraw.Cls
    Picdraw.Circle ((a + X) / 2, (b + Y) / 2), (((a - X) ^ 2 + (b - Y) ^ 2) ^ 0.5) / 2, RGB(0, 0, 0)
    End If
  
End Sub
2013-10-23 11:45
落日幻影
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2013-10-10
收藏
得分:0 
回复 2楼 Artless
不是这样的,是要通过在画好的这个圆内画无数条给定颜色的直径,最终填满这个圆
2013-10-23 12:05
落日幻影
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2013-10-10
收藏
得分:0 
回复 4楼 bczgvip
我没有办法呀,大哥,师傅叫我这样写的,主要是为了教学,能提点一下小弟吗
2013-10-23 13:46
落日幻影
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2013-10-10
收藏
得分:0 
回复 6楼 lowxiong
感谢前辈,但是这样有一个问题就是,圆画好后,触发mouseUp事件会重复的做画线动作

[ 本帖最后由 落日幻影 于 2013-10-23 16:25 编辑 ]
2013-10-23 15:45
落日幻影
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2013-10-10
收藏
得分:0 
回复 8楼 风吹过b
mousedown,跟mousemove是我自己写的,后面的mouseup是lowxiong前辈帮我补的。前辈能不能就是说:在画好圆之后,在这个圆内点一下,然后由这个点发散画线到颜色与线的颜色不一样的圆周位置,也是找两个点的坐标,我实在不知道怎么来写

[ 本帖最后由 落日幻影 于 2013-10-23 17:03 编辑 ]
2013-10-23 16:56
落日幻影
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2013-10-10
收藏
得分:0 
回复 10楼 lowxiong
我先不管怎么拖动画圆了,先画两个现成的圆,我写了这段代码,可以实现在一个区域内点一下可以画出一条直线,但怎么写可以把这个区域一这样画线的方式填充好,我试着谢了好几次都不行,前辈帮我补充一下
Dim rgbColor As String
Dim dr As Single
Dim dg As Single
Dim db As Single
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    rgbColor = Hex(Me.Point(x, y))
    rgbColor = Change2RGB(rgbColor)
    Call printline(x, y)
   
End Sub



Private Sub Form_paint()
    Text1.Text = ""
    Text2.Text = ""
    Text3.Text = ""
    Circle (2000, 2000), 1000, RGB(0, 0, 0)
    Circle (2800, 2800), 1000, RGB(0, 0, 0)
End Sub


Private Function printline(x As Single, y As Single)
   
    Dim lx As Single
    Dim ly As Single
    Dim rx As Single
    Dim ry As Single
    Dim loopflag As Boolean
    loopflag = True
    lx = x - 1
    Do While loopflag
        If Change2RGB(Me.Point(lx, y)) <> rgbColor Then
            loopflag = False
        Else
            lx = lx - 1
        End If
    Loop
   
    loopflag = True
    rx = x + 1
    Do While loopflag
        If Change2RGB(Me.Point(rx, y)) <> rgbColor Then
            loopflag = False
        Else
            rx = rx + 1
        End If
    Loop
    Me.Line (lx, y)-(rx, y), RGB(Val(Text1.Text), Val(Text2.Text), Val(Text3.Text))
End Function

Private Function Change2RGB(c As String)
    Select Case Len(c)
        Case 1: Change2RGB = "00000" & c
        Case 2: Change2RGB = "0000" & c
        Case 3: Change2RGB = "000" & c
        Case 4: Change2RGB = "00" & c
        Case 5: Change2RGB = "0" & c
    End Select
End Function
2013-10-24 13:50
落日幻影
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2013-10-10
收藏
得分:0 
回复 12楼 lowxiong
真的非常感谢前辈,麻烦你了
2013-10-24 15:56
落日幻影
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2013-10-10
收藏
得分:0 
回复 14楼 lowxiong
真的很感谢前辈
2013-10-25 15:04
快速回复:VB中给圆填充颜色的算法怎么写
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023429 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved