to csdnzm(明飞) :文本框和图片框都可以。 因为还要考虑水平和垂直对齐方式,估计文本框满足不了要求,就用picturebox好了。不知道这个循环函数要怎样一个思路去写??给定间距作用是什么??
Private Sub Command1_Click() Dim str1 As String str1 = "一二三四五六七八九十" Label1.Caption = h2v(str1, 4) Text1.Text = h2v(str1, 4) '这个TextBox要MultiLine设为True才可以 End Sub Function h2v(ByVal str As String, ByVal 字数 As Long) As String ReDim astr(字数 - 1) As String Dim strChar As String Dim i As Long, j As Long j = 0 For i = 1 To Len(str) strChar = Mid(str, i, 1) astr(j) = astr(j) & strChar j = j + 1 If j > UBound(astr) Then j = 0 Next h2v = Join(astr, vbCrLf) End Function
astr没有释放啊,最好在h2v函数的末尾加上一句 erase astr
To cuilonggang(白金) :字符串的字符数是不一定的,一开始并不能确定列数,也就无法知道程序运行时需要多少label,这样就需要动态加载label. 但是当列数很多并且有多个字符串时,就有可能会加载几十甚至几百个label,这样程序的性能及占用的系统资源会不会令用户无法忍受??能不能在一个label里实现字符串的竖排??
由于不是vb自带的通用控件,所以无论在什么样的控件上实现的代码都行,只要能实现类似的功能就可以。
因为还要考虑水平和垂直对齐方式,估计文本框满足不了要求,就用picturebox好了。不知道这个循环函数要怎样一个思路去写??给定间距作用是什么??
Dim str1 As String
str1 = "一二三四五六七八九十"
Label1.Caption = h2v(str1, 4)
Text1.Text = h2v(str1, 4) '这个TextBox要MultiLine设为True才可以
End Sub
Function h2v(ByVal str As String, ByVal 字数 As Long) As String
ReDim astr(字数 - 1) As String
Dim strChar As String
Dim i As Long, j As Long
j = 0
For i = 1 To Len(str)
strChar = Mid(str, i, 1)
astr(j) = astr(j) & strChar
j = j + 1
If j > UBound(astr) Then j = 0
Next
h2v = Join(astr, vbCrLf)
End Function
erase astr
但是当列数很多并且有多个字符串时,就有可能会加载几十甚至几百个label,这样程序的性能及占用的系统资源会不会令用户无法忍受??能不能在一个label里实现字符串的竖排??
一个按钮,点按钮可以看到在Label1和Text1竖排的“一二三四五六七八九十”
astr(j) = astr(j) & strChar
改为
astr(j) = strChar & astr(j)
就可以了
不知道居中对齐是什么用意?
举个例子,下边是垂直居中和水平居中的效果: -------------------------
| 一五 |
| 二六九 |
| 三七十 |
| 四八 |
-------------------------当然对于竖排文字来说,垂直对齐只对填不满单元格高度的列才起作用,例如上图中的"九十"列。
我指的是文本框的Alignment属性分别设成0,1,2。排列方式还是从左到右。
字符串“一二三四五六七八九十零”
对齐方式水平居中,垂直居中。实际效果应该是类似于下图所示的样子:
(说明:实际效果,九左边不是空格,而是九的上半部与五的下半部对齐,九的下半部与六的上半部对齐;十、零同理)
--------------------------
| 一 五 |
| 九 |
| 二 六 |
| 十 |
| 三 七 |
| 零 |
| 四 八 |
--------------------------而用重新排列字符串的方式实现竖排效果,是无法做到半行对齐这种效果的。。
在文本框上估计是实现不了了
那位高手能给个在picturebox上实现的例子??
或者有没有实现竖排效果的API???
用TextHeight方法得到文字的高度