如题,100分相送!
/\
/ \
/ \
|\ \
| \ /|
\ \ / |
\ \/ /
\ | /
\|/
/\
/ \
/ \
|\ \
| \ /|
\ \ / |
\ \/ /
\ | /
\|/
解决方案 »
- 水晶报表求助
- bstr vbscript
- word的宏代码如何转化成VB代码
- 自制的ActiveX控件在Web中发布问题
- 如何用VB调用VB中access数据库中表的“打开”,以便对表进行添加、编辑、删除等一系列操作?
- 声卡的型号
- 谁能帮我找到一个房屋交易(或出租等)的系统
- 在線等,請問Open strLogFileLocation For Output As #filenumber 這句是什么意思?
- 为什么RegisterServiceProcess函数在w98和W2000的kenel32.dll中都找不到?
- 高分求教一个有关乱码的问题?
- Msflxgrd.ocx 版本过期的问题
- 如何控制父窗体?
'画一个立方体
'DrawObj - 支持Line方法的对象,窗体,图片框等
'Height - 指定立方体高度
Dim Line1(4) As LineXY
Dim I As Long
DrawObj.ScaleMode = 3 '设置为像素
With Line1(1) '这里的坐标指定立方体形状
.X = 350
.Y = 80
End With
With Line1(2)
.X = 230
.Y = 160
End With
With Line1(3)
.X = 80
.Y = 100
End With
With Line1(4)
.X = 200
.Y = 30
End With
For I = 1 To 4
With Line1(I)
DrawObj.Line (.X, .Y)-(.X, .Y + Height)
End With
DrawObj.Line (Line1(I).X, Line1(I).Y)-(Line1(IIf(I = 4, 1, I + 1)).X, Line1(IIf(I = 4, 1, I + 1)).Y)
DrawObj.Line (Line1(I).X, Line1(I).Y + Height)-(Line1(IIf(I = 4, 1, I + 1)).X, Line1(IIf(I = 4, 1, I + 1)).Y + Height)
Next I
End Function调用:Call Draw3D(Me,160)参数要自己调整啦.
Dim Line1(4) As LineXY
这个LineXY是什么东东????
Dim x As Single, y As Single, l As Single
Me.AutoRedraw = True
Me.Cls
Me.DrawStyle = 0
Randomize
x = 3000 * Rnd(): y = 3000 * Rnd(): l = 1000
Me.Line (x, y)-(x, y + l), vbGreen
Me.Line -(x + l, y + l), vbGreen
Me.Line -(x + l, y), vbGreen
Me.Line -(x, y), vbGreenMe.Line (x, y)-(x + 1 / 2 * l, y - 1 / 2 * l), vbGreen
Me.Line -(x + 1 / 2 * l + l, y - 1 / 2 * l), vbGreen
Me.Line -(x + l, y), vbGreenMe.Line (x + 1 / 2 * l + l, y - 1 / 2 * l)-(x + 1 / 2 * l + l, y - 1 / 2 * l + l), vbGreen
Me.Line -(x + l, y + l), vbGreen
Me.DrawStyle = 1
Me.Line (x, y + l)-(x + 1 / 2 * l, y + l - 1 / 2 * l), vbGreen
Me.Line -(x + 1 / 2 * l, y - 1 / 2 * l), vbGreen
Me.Line (x + 1 / 2 * l, y + l - 1 / 2 * l)-(x + l + 1 / 2 * l, y + l - 1 / 2 * l), vbGreenEnd Sub
X As Long
Y As Long
End Type其实就是API里的那个POINTAPI,只不过我换成了LONG
'画一个立方体
'DrawObj - 支持Line方法的对象,窗体,图片框等
'Height - 指定立方体高度
'mLen - 立方体边长
'mAngle1 - 立方体最左下边与水平线间的角度(平面角度,非3D状态....)
'mAngle2 - 立方体最左上边与水平线间的角度(平面角度,非3D状态....)
Dim Line1(4) As LineXY
Dim I As Long
Dim tmpX As Long, tmpY As Long
DrawObj.ScaleMode = 3 '设置为像素
With Line1(1) '这里的坐标指定立方体形状
.X = 350
.Y = 80
tmpX = .X - mLen
tmpY = .Y
Call GetXY(tmpX, tmpY, .X, .Y, -mAngle1)
End With
With Line1(2)
.X = tmpX
.Y = tmpY
tmpX = .X
tmpY = .Y - mLen
Call GetXY(tmpX, tmpY, .X, .Y, -(90 - mAngle2))
End With
With Line1(3)
.X = tmpX
.Y = tmpY
tmpX = .X + mLen
tmpY = .Y
Call GetXY(tmpX, tmpY, .X, .Y, -mAngle1)
End With
With Line1(4)
.X = tmpX
.Y = tmpY
End With
For I = 1 To 4
With Line1(I)
DrawObj.Line (.X, .Y)-(.X, .Y + Height)
End With
DrawObj.Line (Line1(I).X, Line1(I).Y)-(Line1(IIf(I = 4, 1, I + 1)).X, Line1(IIf(I = 4, 1, I + 1)).Y)
DrawObj.Line (Line1(I).X, Line1(I).Y + Height)-(Line1(IIf(I = 4, 1, I + 1)).X, Line1(IIf(I = 4, 1, I + 1)).Y + Height)
Next I
End FunctionPrivate Function GetXY(ByRef X As Long, ByRef Y As Long, ByVal Xo As Long, ByVal Yo As Long, ByVal mAngle As Long)
'计算以指定点为圆心时,某点偏转某角度后的相对偏转坐标
'X - 偏转前点X(输出偏转后点X)
'Y - 偏转前点Y(输出偏转后点Y)
'Xo - 顶点坐标X
'Yo - 顶点坐标Y
'mAngle - 偏转角度
Dim Js As Double
Dim Jz As Double
Dim L As Double
L = Sqr((Xo - X) ^ 2 + (Yo - Y) ^ 2)
Js = GetAngle(X, Y, Xo, Yo)
Jz = Js + mAngle
Do While Jz < 0
Jz = Jz + 360
Loop
Do While Jz > 360
Jz = Jz - 360
Loop
Jz = Jz * pi / 180
X = L * Cos(Jz) + Xo
Y = L * Sin(Jz) + Yo
End FunctionPublic Function GetAngle(ByVal X As Double, ByVal Y As Double, ByVal Rx As Double, ByVal Ry As Double) As Double
'返回指定点与指定圆心间夹角
'X - 指定点X
'Y - 指定点Y
'Rx - 假想圆心X
'Ry - 假想圆心Y
'返回值 - 角度
Dim Xo As Double
Dim Yo As Double
Xo = X - Rx
Yo = Y - Ry
If Xo <> 0 Then
GetAngle = Atn(-Yo / Xo) * 180 / pi
Else
If Yo > 0 Then
GetAngle = 90
Else
GetAngle = 270
End If
Exit Function
End If
If GetAngle > 0 Then
If Xo > 0 Then
GetAngle = 360 - GetAngle
Else
GetAngle = 180 - GetAngle
End If
ElseIf GetAngle < 0 Then
If Xo > 0 Then
GetAngle = -GetAngle
Else
GetAngle = 180 - GetAngle
End If
Else
If Xo < 0 Then
GetAngle = 180
Else
GetAngle = 0
End If
End If
End Function
听说老马是单身啊,忙得找老婆的时间都没了。各位兄弟多留心。
单身精力就是旺盛。呵呵。。
//
...............等等你从哪里"听说"来的??
打印在 A4的纸张上ScaleMode 应该为什么????
还用 DrawObj.ScaleMode = 3 '设置为像素
可以不>?
myjian(嗷嗷叫的老马):你的习惯不好,应该加上:“ Option Explicit ”
而且你那改进的函数 在:“GetAngle = Atn(-Yo / Xo) * 180 / pi”这里发生溢出。你太有才了
//谢谢指出我的错误,我从小学开始数学就不好....不过在我这里真没有发生过溢出....还烦请LS帮忙改进....但不知道如此讽刺我,是因为我以前在哪里有得罪过你?没错,我只是一个中专没毕业的电工,但我觉得我做人还算可以吧....应该不至于在哪里把这位博士大哥给得罪罗....?
三围立方体
http://www.egooglet.com/static_html/200511092134489897admin.html
旋转立方体
http://www.egooglet.com/static_html/200511092139174367admin.html
X As Long
Y As Long
End TypePrivate Const PI = 3.14159265Private Function Draw3D(ByRef DrawObj As Object, ByVal Height As Long, ByVal mLen As Long, ByVal mAngle1 As Long, ByVal mAngle2 As Long)
'画一个立方体
'DrawObj - 支持Line方法的对象,窗体,图片框等
'Height - 指定立方体高度
'mLen - 立方体边长
'mAngle1 - 立方体最左下边与水平线间的角度(平面角度,非3D状态....)
'mAngle2 - 立方体最左上边与水平线间的角度(平面角度,非3D状态....)
Dim Line1(4) As LineXY
Dim I As Long
Dim tmpX As Long, tmpY As Long
DrawObj.ScaleMode = 3 '设置为像素
With Line1(1) '这里的坐标指定立方体形状
.X = 350
.Y = 80
tmpX = .X - mLen
tmpY = .Y
Call GetXY(tmpX, tmpY, .X, .Y, -mAngle1)
End With
With Line1(2)
.X = tmpX
.Y = tmpY
tmpX = .X
tmpY = .Y - mLen
Call GetXY(tmpX, tmpY, .X, .Y, -(90 - mAngle2))
End With
With Line1(3)
.X = tmpX
.Y = tmpY
tmpX = .X + mLen
tmpY = .Y
Call GetXY(tmpX, tmpY, .X, .Y, -mAngle1)
End With
With Line1(4)
.X = tmpX
.Y = tmpY
End With
For I = 1 To 4
With Line1(I)
DrawObj.Line (.X, .Y)-(.X, .Y + Height)
End With
DrawObj.Line (Line1(I).X, Line1(I).Y)-(Line1(IIf(I = 4, 1, I + 1)).X, Line1(IIf(I = 4, 1, I + 1)).Y)
DrawObj.Line (Line1(I).X, Line1(I).Y + Height)-(Line1(IIf(I = 4, 1, I + 1)).X, Line1(IIf(I = 4, 1, I + 1)).Y + Height)
Next I
End FunctionPrivate Function GetXY(ByRef X As Long, ByRef Y As Long, ByVal Xo As Long, ByVal Yo As Long, ByVal mAngle As Long)
'计算以指定点为圆心时,某点偏转某角度后的相对偏转坐标
'X - 偏转前点X(输出偏转后点X)
'Y - 偏转前点Y(输出偏转后点Y)
'Xo - 顶点坐标X
'Yo - 顶点坐标Y
'mAngle - 偏转角度
Dim Js As Double
Dim Jz As Double
Dim L As Double
L = Sqr((Xo - X) ^ 2 + (Yo - Y) ^ 2)
Js = GetAngle(X, Y, Xo, Yo)
Jz = Js + mAngle
Do While Jz < 0
Jz = Jz + 360
Loop
Do While Jz > 360
Jz = Jz - 360
Loop
Jz = Jz * PI / 180
X = L * Cos(Jz) + Xo
Y = L * Sin(Jz) + Yo
End FunctionPublic Function GetAngle(ByVal X As Double, ByVal Y As Double, ByVal Rx As Double, ByVal Ry As Double) As Double
'返回指定点与指定圆心间夹角
'X - 指定点X
'Y - 指定点Y
'Rx - 假想圆心X
'Ry - 假想圆心Y
'返回值 - 角度
Dim Xo As Double
Dim Yo As Double
Xo = X - Rx
Yo = Y - Ry
If Xo <> 0 Then
GetAngle = Atn(-Yo / Xo) * 180 / PI
Else
If Yo > 0 Then
GetAngle = 90
Else
GetAngle = 270
End If
Exit Function
End If
If GetAngle > 0 Then
If Xo > 0 Then
GetAngle = 360 - GetAngle
Else
GetAngle = 180 - GetAngle
End If
ElseIf GetAngle < 0 Then
If Xo > 0 Then
GetAngle = -GetAngle
Else
GetAngle = 180 - GetAngle
End If
Else
If Xo < 0 Then
GetAngle = 180
Else
GetAngle = 0
End If
End If
End FunctionPrivate Sub Form_Load()
Me.Show
Call Draw3D(Me, 180, 180, 20, 15)
End Sub