Option Explicit
Private Type POINTAPI
X As Long
Y As Long
End Type
Private Const PI As Single = 3.1415
Private Declare Function Polygon Lib "gdi32" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long
Dim Ptg(9) As POINTAPI
Private Sub Command1_Click()
Dim tri(2) As POINTAPI
Dim a As Single, nA As Single
Dim rA As Single, rB As Single
Dim cX As Long, cY As Long
' Dim Ptg(4) As POINTAPI '改为声明模块级变量
cX = Picture1.ScaleWidth / 2
cY = Picture1.ScaleHeight / 2
rA = cX / 2
rB = rA * (Sin(18 * PI / 180) / Sin(126 * PI / 180))
a = 36 * PI / 180
tri(0).X = 0: tri(0).Y = -rA
tri(1).X = -rB * Sin(a): tri(1).Y = -Cos(a) * rB
tri(2).X = rB * Sin(a): tri(2).Y = -Cos(a) * rB
Dim i As Integer, j As Integer
Dim t(2) As POINTAPI
Dim c(4) As Long
c(0) = vbRed
c(1) = vbBlue
c(2) = vbYellow
c(3) = vbGreen
c(4) = RGB(255, 0, 255) For i = 0 To 4
nA = 2 * PI / 5 * i
For j = 0 To 2
t(j).X = tri(j).X * Cos(nA) + tri(j).Y * Sin(nA) + cX
t(j).Y = -tri(j).X * Sin(nA) + tri(j).Y * Cos(nA) + cY
Next j
Ptg(i + 5) = t(0) '加上这句
Ptg(i) = t(1)
drawPoly t, c(i)
Next i
drawPoly Ptg, vbWhite, 5
Picture1.Refresh
End Sub
Private Sub drawPoly(p() As POINTAPI, Optional ByVal fillCol As Long, Optional ByVal nC As Long = 3)
Picture1.FillStyle = 0
Picture1.FillColor = fillCol
Polygon Picture1.hdc, p(0), nC
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim i&
Picture1.ToolTipText = ""
For i = 5 To 9
If (Abs(Ptg(i).X - X) < 5) Then
If (Abs(Ptg(i).Y - Y < 5)) Then Picture1.ToolTipText = "这是第 " & i - 4 & " 个顶点": Exit Sub
End If
NextEnd Sub
Private Type POINTAPI
X As Long
Y As Long
End Type
Private Const PI As Single = 3.1415
Private Declare Function Polygon Lib "gdi32" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long
Dim Ptg(9) As POINTAPI
Private Sub Command1_Click()
Dim tri(2) As POINTAPI
Dim a As Single, nA As Single
Dim rA As Single, rB As Single
Dim cX As Long, cY As Long
' Dim Ptg(4) As POINTAPI '改为声明模块级变量
cX = Picture1.ScaleWidth / 2
cY = Picture1.ScaleHeight / 2
rA = cX / 2
rB = rA * (Sin(18 * PI / 180) / Sin(126 * PI / 180))
a = 36 * PI / 180
tri(0).X = 0: tri(0).Y = -rA
tri(1).X = -rB * Sin(a): tri(1).Y = -Cos(a) * rB
tri(2).X = rB * Sin(a): tri(2).Y = -Cos(a) * rB
Dim i As Integer, j As Integer
Dim t(2) As POINTAPI
Dim c(4) As Long
c(0) = vbRed
c(1) = vbBlue
c(2) = vbYellow
c(3) = vbGreen
c(4) = RGB(255, 0, 255) For i = 0 To 4
nA = 2 * PI / 5 * i
For j = 0 To 2
t(j).X = tri(j).X * Cos(nA) + tri(j).Y * Sin(nA) + cX
t(j).Y = -tri(j).X * Sin(nA) + tri(j).Y * Cos(nA) + cY
Next j
Ptg(i + 5) = t(0) '加上这句
Ptg(i) = t(1)
drawPoly t, c(i)
Next i
drawPoly Ptg, vbWhite, 5
Picture1.Refresh
End Sub
Private Sub drawPoly(p() As POINTAPI, Optional ByVal fillCol As Long, Optional ByVal nC As Long = 3)
Picture1.FillStyle = 0
Picture1.FillColor = fillCol
Polygon Picture1.hdc, p(0), nC
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim i&
Picture1.ToolTipText = ""
For i = 5 To 9
If (Abs(Ptg(i).X - X) < 5) Then
If (Abs(Ptg(i).Y - Y < 5)) Then Picture1.ToolTipText = "这是第 " & i - 4 & " 个顶点": Exit Sub
End If
NextEnd Sub
解决方案 »
- 我用vb6.0制作了一个软件,但是安装的时候提示“由于您的系统中某些文件过时了,安装无法继续,如果您希望安装程序立即更新这些程序请点击确定,再继续安装前重启!”
- 如何将vb5写的程序升级到vb6?
- [请教] 使用VBA代码禁用掉excel中的部分功能
- 为什么regsavekey总是返回87?
- 一个非常简单但是不好解决的问题:图片边框的控制句柄如何透明?
- 求购SCANSOFT公司的最新Capture Development System带亚洲语言OCR.
- 兄弟们提供给我一些图标呀
- 好多人文怎样将textBox只能输入大写,我来说两句
- 关于vb与access数据库备份时出现"数据库以排它的方式打开"错误
- IE警报
- 把选项卡中的内容添加到SQL数据库中
- Office VBA宏批量数字签名
Private Type POINTAPI '定义一个POINT结构,因为重名,所以加 API
X As Long 'x坐标
Y As Long 'y坐标
End Type '结束定义
Private Const PI As Single = 3.1415 '圆周率常量
Private Declare Function Polygon Lib "gdi32" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long '申明API函数gdi32中的Polygon,填充多边形
Dim Ptg(9) As POINTAPI '定义9个点
Private Sub Command1_Click() '按钮1按下过程
Dim tri(2) As POINTAPI '定义2个点
Dim a As Single, nA As Single '定义2个变量
Dim rA As Single, rB As Single '定义2个变量,表示凸点、凹点半径...
三角函数lz学过么?
(0-rcosa, rsina)
\
\
\
(0,0)------(0,r)
/
/
/
其实每句的注释装好VB,选择每个关键字,按f1都有。
其实每句的注释装好MSDN,选择每个关键字,按f1都有。
lz什么也不会,又没有时间,这可难了!
因为前面要打基础,告诉你什么叫对象,什么叫控件,什么叫API,什么叫函数,什么叫变量....
上课全走神去了吧~~~~~~
nA = 2 * PI / 5 * i
For j = 0 To 2
t(j).X = tri(j).X * Cos(nA) + tri(j).Y * Sin(nA) + cX
t(j).Y = -tri(j).X * Sin(nA) + tri(j).Y * Cos(nA) + cY
Next j
Ptg(i + 5) = t(0) '加上这句
Ptg(i) = t(1)
drawPoly t, c(i)
Next i
drawPoly Ptg, vbWhite, 5
Picture1.Refresh
这句什么意思啊?
谁能帮我注释下