我想在picture里快速显示如下的文字(带颜色)
DDD: 123 HHH: 568 ZZZ: 568 SSS: 999
求教该如何做,谢谢!!!
DDD: 123 HHH: 568 ZZZ: 568 SSS: 999
求教该如何做,谢谢!!!
解决方案 »
- 这个问题有点难度。关于vb与EXCEL的,真心求助。
- 华表华表华表华表华表华表华表华表华表华表 分页分页分页
- 一个数据表最多可以有多少列呢??
- 找人做毕业设计
- 请教:日期顺序重排,该如何做,谢谢!!!
- 怎样用VB文本框查询ACCESS的内容并显示在另外的文本框。
- 太奇怪了,还是下午的socket问题:为什么老是说地址在使用或者说所需事物的错误协议或者连接状态
- 如何解决CommonDialog1.ShowPrinter的窗口选择“取消”的问题
- 关于OCX请求帮住!!!
- VB中的sendmessage函数功能很大,能具体跟我说说吗,我会很THANK YOU 的
- VB6.0奇怪的问题
- 如何实现本机访问指定ip时自动转向另外一个ip
Picture1.Print "DDDD"
Picture1.ForeColor = vbBlack
Picture1.Print "FFFFD"
Picture1.ForeColor = RGB(255, 0, 0)
三个数不小于0,不大于255,自己配吧。颜色可以是qbcolor
Picture1.ForeColor = qbcolor(4)
值 颜色 值 颜色
0 黑色 8 灰色
1 兰色 9 亮兰色
2 绿色 10 亮绿色
3 青色 11 亮青色
4 红色 12 亮红色
5 洋红色 13 亮洋红色
6 黄色 14 亮黄色
7 白色 15 亮白色 颜色可以是vb颜色常数
Picture1.ForeColor = vbred
常数 值 描述
vbBlack &H0 黑色
vbRed &HFF 红色
vbGreen &HFF00 绿色
vbYellow &HFFFF 黄色
vbBlue &HFF0000 兰色
vbMagenta &HFF00FF 洋红
vbCyan &HFFFF00 青色
vbWhite &HFFFFFF 白色
...
我的意思是不用picture1.print方法,用其他方法快速绘制行彩色文字,谢谢!!!
需要注意的是,VB本身的ForeColor属性不光指定TextColor,还会创建一个新的Pen选入DC,从而降低了效率。
PicPrintColorText Picture1, vbRed, "DDD: 123"
PicPrintColorText Picture1, vbBlue, "HHH: 568"
PicPrintColorText Picture1, vbGreen, " ZZZ: 568"
PicPrintColorText Picture1, vbMagenta, "SSS: 999"
End Sub
'---------------------------------------------------------------------------------------
' 过程名 : PicPrintColorText
' 时间 : 2010-3-29 11:11
' 作者 : 杨过.网狐.cn(csdn bcrun)
' 功能 :
' 说明 :
' 备注 : http://topic.csdn.net/u/20100328/20/67424952-4eb8-4778-9c20-01849528eded.html
'picture请教,谢谢!!!
'---------------------------------------------------------------------------------------
'
Public Sub PicPrintColorText(picDraw As PictureBox, ByVal NewColor As Long, _
ByVal Text As String, Optional ByVal NeedLineBreak As Boolean = False)
picDraw.ForeColor = NewColor
If NeedLineBreak Then
picDraw.Print Text
Else
picDraw.Print Text;
End If
End Sub
在股票软件K线图中(如大智慧),移动鼠标,无论是几个图,他的每日数据都能随鼠标移动变化,且各个指标颜色不同,它的绘制很快,还请拿各位帮助,谢谢!!!下面的代码加了DoEvents,则文字延时闪烁,不加DoEvents,则每日数据不随鼠标变化而变化,只显示鼠标停下来的数据Private Sub Picdrawk_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim i%, II%
Dim TEMPGJ(21) As String
Dim TEMPGJN As LongSelect Case PDDJMOVE
Case 0
For i = 1 To UBound(DrawLin) - 2
If DrawLin(i) > y - 2 And DrawLin(i) < y + 2 Then
Line1(i).Visible = True
Picdrawk.MousePointer = 7
iWhichSplit = i
Exit For
Else
Line1(i).Visible = False
Picdrawk.MousePointer = 99
iWhichSplit = 0
End If
Next
Case 1
Picdrawk.MousePointer = 7
If splitline = 1 Then
If y < Picdrawk.ScaleHeight * 0.3 Then
Line1(splitline).y1 = Picdrawk.ScaleHeight * 0.3
Line1(splitline).y2 = Picdrawk.ScaleHeight * 0.3
DrawLin(splitline) = Picdrawk.ScaleHeight * 0.3
Else
Line1(splitline).y1 = y
Line1(splitline).y2 = y
DrawLin(splitline) = y
End If
Else
If y > DrawLin(splitline + 1) * 0.9 Then
Line1(splitline).y1 = DrawLin(splitline + 1) * 0.9
Line1(splitline).y2 = DrawLin(splitline + 1) * 0.9
DrawLin(splitline) = DrawLin(splitline + 1) * 0.9
Else
Line1(splitline).y1 = y
Line1(splitline).y2 = y
DrawLin(splitline) = y
End If
End If
Line1(splitline).Visible = True
Case 2
Ps.Visible = True
x = CInt((x - DrawLin(UBound(DrawLin) - 1)) / ((DrawLin(UBound(DrawLin)) - DrawLin(UBound(DrawLin) - 1)) / EveryScreenDay))
Line5.x1 = ((DrawLin(UBound(DrawLin)) - DrawLin(UBound(DrawLin) - 1))) / EveryScreenDay * x + DrawLin(UBound(DrawLin) - 1)
Line5.x2 = ((DrawLin(UBound(DrawLin)) - DrawLin(UBound(DrawLin) - 1))) / EveryScreenDay * x + DrawLin(UBound(DrawLin) - 1)
If x >= 1 And x < UBound(hq) Then
Line5.Visible = True
TEMPGJ(0) = ""
TEMPGJ(1) = "ÈÕ ÆÚ"
TEMPGJ(2) = hq(x).RQ
TEMPGJ(3) = "¿ªÅ̼Û"
TEMPGJ(4) = hq(x).KPJ
TEMPGJ(5) = "×î¸ß¼Û"
TEMPGJ(6) = hq(x).ZGJ
TEMPGJ(7) = "×îµÍ¼Û"
TEMPGJ(8) = hq(x).ZDJ
TEMPGJ(9) = "ÊÕÅ̼Û"
TEMPGJ(10) = hq(x).SPJ
TEMPGJ(11) = "³É½»Á¿"
TEMPGJ(12) = hq(x).CJL
TEMPGJ(13) = "³É½»¶î"
TEMPGJ(14) = hq(x).CJE
TEMPGJ(15) = "ÕÇ·ù"
TEMPGJ(16) = hq(x).ZF
TEMPGJ(17) = "Õñ·ù"
TEMPGJ(18) = ""
TEMPGJ(19) = "»»ÊÖÂÊ"
TEMPGJ(20) = ""
TEMPGJ(21) = ""
If x > 1 Then
TEMPGJN = hq(x - 1).SPJ
End If
If x = 1 Then
TEMPGJN = 0
End If
Call DrawxxtTEMP(Ps, TEMPGJ, TEMPGJN)
Erase TEMPGJ
TEMPGJN = 0
For i = 0 To UBound(DRAWLINZT)
ZBTSX = DrawLin(i) + Picdrawk.TextHeight("a") * 1.2
ZBTXX = DrawLin(i) '- Picdrawk.TextHeight("a") * 0.4
If i > 0 Then
Picdrawk.Line (0, ZBTXX)-(DrawLin(UBound(DrawLin)) * 0.999, ZBTSX), &H0&, BF
Picdrawk.DrawWidth = 1
Picdrawk.DrawStyle = 2
Picdrawk.Line (DrawLin(UBound(DrawLin) - 1), ZBTSX)-(DrawLin(UBound(DrawLin)), ZBTSX), &H404080 ' &H40C0&
Else
Picdrawk.Line (DrawLin(UBound(DrawLin) - 1) * 1.011, 0)-(DrawLin(UBound(DrawLin)) * 0.999, DrawLin(0)), &H0&, BF
Picdrawk.DrawWidth = 1
Picdrawk.DrawStyle = 2
Picdrawk.Line (DrawLin(UBound(DrawLin) - 1), DrawLin(0))-(DrawLin(UBound(DrawLin)), DrawLin(0)), &H404080 ' &H40C0&
End If
Picdrawk.DrawWidth = 1
Picdrawk.DrawStyle = 0
Picdrawk.Line (0, ZBTXX)-(DrawLin(UBound(DrawLin)), ZBTXX), &HC0&
Picdrawk.Line (DrawLin(UBound(DrawLin) - 1), ZBTXX)-(DrawLin(UBound(DrawLin) - 1), ZBTSX), &HC0&
Call Drawhtsdtextgd(Picdrawk, i, CInt(x))
Next
DoEvents
Else
Ps.Visible = False
Line5.Visible = False
End If
End SelectEnd Sub
Sub Drawhtsdtextgd(Picstep As PictureBox, xdwz As Integer, maxsizem As Integer)
Dim i%
Dim PRINTTEMP As String
Dim NEWPRINTTEMP As String
Dim yssd As Integer
ReDim Preserve Cxhztxt(xdwz)If xdwz = 0 Then
PRINTTEMP = DRAWLINZT(xdwz).ZBMC
Picstep.CurrentX = DrawLin(UBound(DrawLin) - 1) * 1.005
Picstep.CurrentY = (DrawLin(xdwz) - Picdrawk.TextHeight("a") * 1.2) / 2
Picstep.ForeColor = &HDADADA
Picstep.Print PRINTTEMP
Else
Picstep.CurrentX = DrawLin(UBound(DrawLin) - 1) * 1.005
PRINTTEMP = DRAWLINZT(xdwz).ZBMC
Picstep.CurrentY = DrawLin(xdwz)
Picstep.ForeColor = &HDADADA
Picstep.Print PRINTTEMP
End If
yssd = 0
For i = 0 To UBound(DRAWLINZT(xdwz).arArr)
ReDim Preserve Cxhztxt(xdwz).ixwithn(i)
If DRAWLINZT(xdwz).arArr(i).HXPD = False Then
NEWPRINTTEMP = NEWPRINTTEMP & " " & DRAWLINZT(xdwz).arArr(i).VarName & "£º" & Format(DRAWLINZT(xdwz).arArr(i).VarArr(maxsizem), "0.00")
Picstep.CurrentX = DrawLin(UBound(DrawLin) - 1) * 1.005 + Picstep.TextWidth(PRINTTEMP) + Picstep.TextWidth(NEWPRINTTEMP) - Picstep.TextWidth(DRAWLINZT(xdwz).arArr(i).VarName & "£º" & Format(DRAWLINZT(xdwz).arArr(i).VarArr(maxsizem), "0.00"))
If xdwz = 0 Then
Picstep.CurrentY = (DrawLin(xdwz) - Picdrawk.TextHeight("a") * 1.2) / 2
Else
Picstep.CurrentY = DrawLin(xdwz)
End If
If yssd = 0 Then
Picstep.ForeColor = vbWhite
End If
If yssd = 1 Then
Picstep.ForeColor = vbYellow
End If
If yssd = 2 Then
Picstep.ForeColor = &HFF00FF
End If
If yssd = 3 Then
Picstep.ForeColor = vbGreen
End If
If yssd = 4 Then
Picstep.ForeColor = vbWhite
End If
If yssd = 5 Then
Picstep.ForeColor = vbWhite
End If
If yssd = 6 Then
Picstep.ForeColor = vbWhite
End If
Cxhztxt(xdwz).ixwithn(i).icolock = Picstep.ForeColor
Cxhztxt(xdwz).ixwithn(i).iyhight = Picstep.CurrentY
Cxhztxt(xdwz).ixwithn(i).ixwith = DrawLin(UBound(DrawLin) - 1) * 1.005 + Picstep.TextWidth(PRINTTEMP) + Picstep.TextWidth(NEWPRINTTEMP) - Picstep.TextWidth(DRAWLINZT(xdwz).arArr(i).VarName & "£º" & Format(DRAWLINZT(xdwz).arArr(i).VarArr(maxsizem), "0.00"))
Picstep.Print DRAWLINZT(xdwz).arArr(i).VarName & "£º" & Format(DRAWLINZT(xdwz).arArr(i).VarArr(maxsizem), "0.00")
yssd = yssd + 1
End If
NextNEWPRINTTEMP = ""
PRINTTEMP = ""
End Sub
Public Function DrawxxtTEMP(picutor As PictureBox, HGF() As String, ZRGJ As Long)
picutor.Cls
picutor.Line (picutor.ScaleLeft, picutor.ScaleTop)-(picutor.ScaleWidth * 0.99, picutor.ScaleHeight * 0.99), vbRed, B
picutor.CurrentY = picutor.TextHeight("A") / 6
Dim i As Integer For i = 0 To UBound(HGF)
Select Case i
Case 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21
picutor.FontSize = 11
picutor.ForeColor = vbWhite
picutor.CurrentX = (picutor.ScaleWidth - picutor.TextWidth(HGF(i))) / 2
Case 2
picutor.FontSize = 9
picutor.FontBold = False
picutor.ForeColor = &HFFFF00
picutor.CurrentX = (picutor.ScaleWidth - picutor.TextWidth(HGF(i))) / 2
Case 4, 6, 8, 10
picutor.FontSize = 9
If Val(HGF(i)) > ZRGJ Then
picutor.ForeColor = vbRed
End If
If Val(HGF(i)) = ZRGJ Then
picutor.ForeColor = vbWhite
End If
If Val(HGF(i)) < ZRGJ Then
picutor.ForeColor = &HFFFF00
End If
HGF(i) = Format(HGF(i) / 1000, "0.00")
picutor.CurrentX = (picutor.ScaleWidth - picutor.TextWidth(HGF(i)))
Case 12
picutor.FontSize = 9
If Val(HGF(i)) > 1000000 Then
HGF(i) = Format(HGF(i) / 10000, "0") & "Íò"
End If
picutor.ForeColor = vbRed
picutor.CurrentX = (picutor.ScaleWidth - picutor.TextWidth(HGF(i)))
Case 14
picutor.FontSize = 9
If Val(HGF(i)) > 1000000 Then
HGF(i) = Format(HGF(i) / 100000, "0.00") & "ÒÚ"
End If
picutor.ForeColor = vbRed
picutor.CurrentX = (picutor.ScaleWidth - picutor.TextWidth(HGF(i)))
Case 16
picutor.FontSize = 9
If Val(HGF(i)) > 0 Then
picutor.ForeColor = vbRed
End If
If Val(HGF(i)) = 0 Then
picutor.ForeColor = vbWhite
End If
If Val(HGF(i)) < 0 Then
picutor.ForeColor = &HFFFF00
End If
HGF(i) = Format(Abs(HGF(i) * 100), "0.00")
picutor.CurrentX = (picutor.ScaleWidth - picutor.TextWidth(HGF(i)))
' Case Else
' picutor.ForeColor = vbRed
End Select
picutor.Print HGF(i)
Next
End Function
Option ExplicitPrivate Sub Command1_Click()
Picture1.Visible = False
Picture1.Cls
大量绘图
Picture1.Visible = True
End SubPrivate Sub Form_Load()
Picture1.AutoRedraw = True
End Sub
Picture1.Print "DDDD"
Picture1.ForeColor = vbBlack
Picture1.Print "FFFFD"
再求教一下:
画矩形:我只会用picture1.line (0,0)-(100,100),,bf
用API画矩形如何画,谢谢!!!