如何用api画圆,并用弦截断,两块涂上不同的颜色?

yardloun 2011-03-29 09:34:03


就是用vb画出这样的图形?

不是在form上面绘图,我是写一个控件,也就是在usercontrol上面绘制,怎么办呢?
...全文
126 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiashie 2011-04-01
  • 打赏
  • 举报
回复
哎,几何没学好。。。
jiashie 2011-04-01
  • 打赏
  • 举报
回复
上面 If t1 > PI Then
x2 = a + Cos(t2) * r
y2 = b + Sin(t2) * r
Else
x2 = a + Cos(t2) * r
y2 = b - Sin(t2) * r
End If
写错了(好像弦交点坐标也算错了)
if t2 >PI

另:常量定义

Const PI = 3.14
jiashie 2011-04-01
  • 打赏
  • 举报
回复

'form中添加一个pictureBox,一个commandButton
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 Command1_Click()
Dim w As Double
Dim h As Double
Dim a As Double, b As Double
Dim r As Double
Dim t1 As Double
Dim t2 As Double
Dim x1 As Double, y1 As Double
Dim x2 As Double, y2 As Double

With Picture1
.AutoRedraw = True
.ScaleMode = vbPixels
.FillStyle = vbFSSolid

w = Picture1.ScaleWidth
h = Picture1.ScaleHeight
a = w / 2
b = h / 2
r = h / 4
t1 = 0
t2 = 3 * PI / 2

'弦两点的坐标,不知道算法对了没
If t1 > PI Then
x1 = a + Cos(t1) * r
y1 = b + Sin(t1) * r
Else
x1 = a + Cos(t1) * r
y1 = b - Sin(t1) * r
End If

If t1 > PI Then
x2 = a + Cos(t2) * r
y2 = b + Sin(t2) * r
Else
x2 = a + Cos(t2) * r
y2 = b - Sin(t2) * r
End If

Picture1.Circle (a, b), r, vbBlue, t1, t2
Picture1.Circle (a, b), r, vbRed, t2, t1
Picture1.Line (x1, y1)-(x2, y2), vbRed

Dim x3 As Double, y3 As Double
'欲填充区域内的一点,我是通过MouseDown事件中随便取一点
'如果有算法能计算出一个属于目标区域的点坐标,那最好了
x3 = 283
y3 = 210
.FillColor = RGB(Int(Rnd * 255), Int(Rnd * 255), Int(Rnd * 255))
ExtFloodFill .hdc, x3, y3, .Point(x3, y3), 1

x3 = 244
y3 = 158
.FillColor = RGB(Int(Rnd * 255), Int(Rnd * 255), Int(Rnd * 255))
ExtFloodFill .hdc, x3, y3, .Point(x3, y3), 1
End With
End Sub
yardloun 2011-03-31
  • 打赏
  • 举报
回复
很希望2楼能给出一个例子哈,例子中用到的数值大小随便定,谢谢哈
贝隆 2011-03-31
  • 打赏
  • 举报
回复
直接使用Line方法绘制,算好两个点绘制
yardloun 2011-03-31
  • 打赏
  • 举报
回复
楼上,请问具体怎么操作呢?很不懂那个封闭区域是怎么识别出来的,它怎么确定哪些是封闭的?
jiashie 2011-03-30
  • 打赏
  • 举报
回复
API:
FloodFill
ExtFloodFill

809

社区成员

发帖
与我相关
我的任务
社区描述
VB 多媒体
社区管理员
  • 多媒体
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧