| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3333 人关注过本帖
标题:请教如何填充颜色?
取消只看楼主 加入收藏
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
结帖率:96%
收藏
已结贴  问题点数:20 回复次数:10 
请教如何填充颜色?
用line围成的三角形,怎么填充颜色??
搜索更多相关主题的帖子: 三角形 如何 
2015-01-25 16:02
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
收藏
得分:0 
找不到方法啊,
2015-01-26 20:49
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
收藏
得分:0 
我想学API的方法。
Declare Function ExtFloodFill Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long, ByVal wFillType As Long) As Long
怎么用??
2015-01-27 14:35
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
收藏
得分:0 
Form1.Line (Form1.Width / 2, 0)-(0, Form1.Height)
Form1.Line -(Form1.Width, Form1.Height)
Form1.Line -(Form1.Width / 2, 0)
这个怎么弄??
2015-01-27 15:51
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
收藏
得分:0 
以下是引用lianyicq在2015-1-27 16:00:31的发言:

这是逐点画直线。如果要封闭,最后一点和第一点要相连,即
form1.line -(form1.width/2,0)中的(form1.width/2,0)这点也出现在第一行代码中。
实际测试,最直接。

太好了,又学会了多边形画法。

我是说下面这个多边形如何填色?窗体上的三角形
Form1.Line (Form1.Width / 2, 0)-(0, Form1.Height)
Form1.Line -(Form1.Width, Form1.Height)
Form1.Line -(Form1.Width / 2, 0)
我不会嘛,多点例子才能学会。

[ 本帖最后由 txxb 于 2015-1-27 20:29 编辑 ]
2015-01-27 20:15
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
收藏
得分:0 
以下是引用xzlxzlxzl在2015-1-27 17:28:09的发言:

拓展lianyicq版主的功能,填充选中的颜色
Option Explicit
Private Declare Function ExtFloodFill Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long, ByVal wFillType As Long) As Long

Private Sub Form_Load()
  Form1.ScaleMode = 3
  Picture1.ScaleMode = 3
  Picture1.AutoRedraw = True
  Picture1.Circle (Picture1.Width * 0.5, Picture1.Height * 0.5), Picture1.Height * 0.4, vbRed
End Sub
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  Dim c As Long, r As Long, g As Long, b As Long, s As Integer
  Randomize
  r = Rnd * 255: g = Rnd * 255: b = Rnd * 255
  If Button = 1 Then
    c = Picture1.Point(X, Y)  '获取要取代的颜色
    Picture1.FillColor = RGB(r, g, b)
    s = Picture1.FillStyle
    Picture1.FillStyle = 0  '填充模式
    ExtFloodFill Picture1.hdc, X, Y, c, 1  '从鼠标选中的点开始填充随机色(用模式1,模式0是判断边界颜色)
    Picture1.FillStyle = s  '还原填充模式
  End If
End Sub

太感谢了,等我一句一句的读懂理解了,我就慢慢的会使用API了。

ExtFloodFill Picture1.hdc, X, Y, c, 1
这个圆在窗体上,怎么填色

[ 本帖最后由 txxb 于 2015-1-27 20:31 编辑 ]
2015-01-27 20:18
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
收藏
得分:0 
以下是引用xzlxzlxzl在2015-1-27 22:08:19的发言:

ExtFloodFill me.hdc, X, Y, c, 1或 ExtFloodFill form1.hdc, X, Y, c, 1
这个问题我都不好意思回答,只是惊奇于你好意思问。因为纯小白当前是到不了需要问图形处理的问题的,如果真的需要了,大致就像史前人穿越过来要开汽车一样。

我不懂就问,管他好意思不好意思,学到东西是真的。
Option Explicit
Private Declare Function ExtFloodFill Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long, ByVal wFillType As Long) As Long

Private Sub Form_Load()
Form1.ScaleMode = 3
Picture1.ScaleMode = 3
Picture1.AutoRedraw = True
Picture1.ForeColor = vbRed
Picture1.FillColor = vbBlue
Picture1.FillStyle = 0

Picture1.Line (Picture1.Width / 2, 0)-(0, Picture1.Height)
Picture1.Line -(Picture1.Width, Picture1.Height)
Picture1.Line -(Picture1.Width / 2, 0)


Call ExtFloodFill(Picture1.hdc, Picture1.Width / 2, Picture1.Height / 2, vbRed, 0)
End Sub
我问的原因是吧上面所有的Picture1换成Form1,就没有填色效果了,结果没有问到关键处
2015-01-28 19:09
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
收藏
得分:0 
Declare Function ExtFloodFill Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long, ByVal wFillType As Long) As Long

Private Sub Form_Load()
Form1.Line (Form1.ScaleWidth / 2, 0)-(0, Form1.ScaleHeight)
Form1.Line -(Form1.ScaleWidth, Form1.ScaleHeight)
Form1.Line -(Form1.ScaleWidth / 2, 0)
End Sub

Private Sub Form_Click()
Call ExtFloodFill(Form1.hdc, Form1.ScaleWidth / 2, Form1.ScaleHeight / 2, vbRed, 0)
End Sub

单击没反应,帮看看缺少什么?
2015-01-28 19:24
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
收藏
得分:0 
以下是引用lianyicq在2015-1-29 10:05:27的发言:

有意思,不管用什么方法,学到东西才是真的.
原因自己想想,我只提示一点那个API函数需要在你希望填充的图形内任意定一点,注意是以像素为单位。如果点不在图形内,当然不填充.

你给我的方法,下面这样就不行了,为什么?其他啥都没改
Private Sub Form_Click()
Call ExtFloodFill(Picture1.hdc, Picture1.Width / 2, Picture1.Height / 2, vbRed, 0)
End Sub

[ 本帖最后由 txxb 于 2015-1-29 13:01 编辑 ]
2015-01-29 12:53
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
收藏
得分:0 
程序代码:
Option Explicit
Private Declare Function ExtFloodFill Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long, ByVal wFillType As Long) As Long

Private Sub Form_Load()
Form1.ScaleMode = 3
Picture1.ScaleMode = 3
Picture1.AutoRedraw = True
Picture1.ForeColor = vbRed
Picture1.FillColor = vbBlue
Picture1.FillStyle = 0

Picture1.Line (Picture1.Width / 2, 0)-(0, Picture1.Height)
Picture1.Line -(Picture1.Width, Picture1.Height)
Picture1.Line -(Picture1.Width / 2, 0)


Call ExtFloodFill(Picture1.hdc, Picture1.Width / 2, Picture1.Height / 2, vbRed, 0)
End Sub

还有我发现把Picture1.ForeColor = vbRed改个颜色都不行,对我这个不会的人来说,这都是很神奇的问题
2015-01-29 13:46
快速回复:请教如何填充颜色?
数据加载中...
 
   



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

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