我需要定义一个过程来实现一个算法:我有n个点(n=1,2,3,.......),想编一个算法来确定每个点的X,Y坐标。
关于X,Y坐标应遵循以下原则:
1.这n个点按左右两列排列;
2.这n个点以中心坐标(0,0)对称排列;
3.位于左列的点的X坐标为-25;
4.位于右列的点的X坐标为+25;
5.相邻两行点的Y坐标间隔30;
6.如果点的个数n是奇数,中间一行点的Y坐标为0;如果是偶数,一定是上下两行点的Y坐标分别偏离Y的中心坐标+15、-15排列。寻求VB的算法,最好封装成一个函数来实现。
关于X,Y坐标应遵循以下原则:
1.这n个点按左右两列排列;
2.这n个点以中心坐标(0,0)对称排列;
3.位于左列的点的X坐标为-25;
4.位于右列的点的X坐标为+25;
5.相邻两行点的Y坐标间隔30;
6.如果点的个数n是奇数,中间一行点的Y坐标为0;如果是偶数,一定是上下两行点的Y坐标分别偏离Y的中心坐标+15、-15排列。寻求VB的算法,最好封装成一个函数来实现。
关于X,Y坐标应遵循以下原则:
1.这n个点按左右两列排列;
2.这n个点以中心坐标(0,0)对称排列;
3.位于左列的点的X坐标为-25;
4.位于右列的点的X坐标为+25;
5.相邻两行点的Y坐标间隔30;
6.如果点的个数n是奇数,中间一行点的Y坐标为0;如果是偶数,一定是中心点上下两行点的Y坐标分别偏离Y的中心坐标+15、-15排列。寻求VB的算法,最好封装成一个函数来实现。
·设整个字符区的左上角坐标为(0,0)
·按两列N行排列,使用.TextWidth和TextHeight方法计算出每个字符串将要占据的矩形大小
·计算得到左列和右列的最大宽度,加上预留的中间间隔(比如32个像素宽),得到总宽度。
·总高度=(每行高度+预留行间隔)*总行数-预留行间隔,(比如预留行间隔4个像素高)
·最后将所有X坐标减去‘总宽度/2’,所有Y坐标减去‘总高度/2’即为所求
'求关于中心点0,0对称的函数
Public Sub XY_ZuoBiao(ByVal n As Integer, ByRef a() As Integer)
ReDim a(n, 2)
End Sub
Dim n As Integer
Dim a() As Integer
n = 4
Call XY_ZuoBiao(n, a)
Dim i As Integer, j As Integer
For i = 0 To UBound(a, 1)
For j = 0 To UBound(a, 2)
Debug.Print a(i, j),
Next
Debug.Print
Next
End SubPublic Sub XY_ZuoBiao(ByVal n As Integer, ByRef a() As Integer)
Dim Row As Integer
Dim Idx As Integer
Dim tmpY As Integer
Dim i As Integer
Const X1 = -25: Const X2 = 25
Const Y = 30
Row = Abs(Fix(-n / 2))
ReDim a(n, 2)
tmpY = Row * Y / 2
For i = 0 To Row
a(Idx, 0) = Idx: a(Idx, 1) = X1: a(Idx, 2) = tmpY
If Idx + 1 <= n Then
a(Idx + 1, 0) = Idx + 1: a(Idx + 1, 1) = X2: a(Idx + 1, 2) = tmpY
End If
Idx = Idx + 2
tmpY = tmpY - Y
Next
End Sub
只是一个思路,没有严格测试....
a(n, 0)不知道你要存储什么,我的示例是放了下标,感觉没意义。直接ReDim a(n, 1),这样a(n, 0)放x,
这样a(n, 1)放y即可....
'求关于中心点0,0对称的函数
Public Sub XY_ZuoBiao(ByVal n As Integer, ByRef a() As Integer)
'参数n为点个数,参数a()为要求的XY坐标组成的数组
ReDim a(n, 2)
。’正在编写,还未实现,敬请期待
End Sub