回 帖 发 新 帖 刷新版面

主题:为什么画出的太极图最下面缺一块?

在窗体的图片框上画太极图
Private Sub Picture1_Click()
    pi = 3.1415926
    x = Picture1.Width / 2
    y = Picture1.Height / 2
    r = Picture1.Height / 2
    Picture1.Circle (x, y), r, QBColor(0)   '圆心在图片框的正中央,画圆
    Picture1.Circle (x, y / 2), r / 2, , pi / 2, pi * 3 / 2   '大圆中间上面的左圆弧
    Picture1.Circle (x, y * 3 / 2), r / 2, , pi * 3 / 2, pi / 2 '大圆中间下面的右圆弧
    Picture1.FillStyle = 0   '填充风格为透明
    Picture1.Circle (x, y / 2), r / 8
    Picture1.Circle (x, y * 3 / 2), r / 8
    'Picture1.FillStyle = 1
 End Sub
为什么画出的太极图最下面缺一块?也就是说,为什么最下面被图片框的底边"切"了一部分去,而最上面是完整的呢?[em18]

回复列表 (共5个回复)

沙发

1.因为picturebox有边框
2.如果你已经把边框改成没有了,那可能是你没注意到picture1.width
在picture1.width的距离上画线,实际上已经跑到picture1的外面了!

板凳

[quote]
在picture1.width的距离上画线,实际上已经跑到picture1的外面了![/quote]为什么?不懂!还请指点,谢谢!
[em19]

3 楼

[quote]x = Picture1.Width / 2
    y = Picture1.Height / 2
    r = Picture1.Height / 2
[/quote]
把picture1.height,picture1.width分别改为picture1.scaleheight,picture1.scaleWidth

4 楼

你可以这样试一下,染上了黑白两种颜色
Private Sub Picture1_Click()
    Picture1.Cls
    Dim i As Long
    pi = 3.1415926
    x = Picture1.Width / 2 - 50
    y = Picture1.Height / 2 - 50
    r = Picture1.Height / 2 - 50
    Picture1.FillStyle = 0
    Picture1.DrawWidth = 2
    For i = 0 To r Step 2
       Picture1.ForeColor = vbWhite
       Picture1.Circle (x, y), i, , pi / 2, pi * 3 / 2 '圆心在图片框的正中央,画圆
       Picture1.ForeColor = vbBlack
       Picture1.Circle (x, y), i, , pi * 3 / 2, pi / 2 '圆心在图片框的正中央,画圆
    Next i
    Picture1.ForeColor = vbBlack
    Picture1.FillColor = vbBlack
    Picture1.Circle (x, y / 2), r / 2    '大圆中间上面的左圆弧
    Picture1.ForeColor = vbWhite
    Picture1.FillColor = vbWhite
    Picture1.Circle (x, y * 3 / 2), r / 2 '大圆中间下面的右圆弧
    Picture1.Circle (x, y / 2), r / 8
    Picture1.ForeColor = vbBlack
    Picture1.FillColor = vbBlack
    Picture1.Circle (x, y * 3 / 2), r / 8
End Sub

5 楼

[quote][quote]
在picture1.width的距离上画线,实际上已经跑到picture1的外面了![/quote]为什么?不懂!还请指点,谢谢!
[em19][/quote]

你最好先把scalewidth和width区分一下,不过在窗体和图片框的scalemode一样的情况下,把图片框设成无边框,而其他都是默认值时没什么区别,所以上面我没特别说明。

注意:窗口的宽度起始都是以0开始的,比如宽度为3,那么最右边实际为2(坐标为0,1,2),当你画到3的时候实际上已经画到窗口外面去了!

我来回复

您尚未登录,请登录后再回复。点此登录或注册