字体太小是字太多的原因,少几个字就好了,那个不是大毛病,可以容忍.
现在的问题是,那两条横线在字少而大的时候,不对称且跟横着那几个字重合.解决问题100分.,全部问题解决后奖励几千分.
分不是问题.
现在的问题是,那两条横线在字少而大的时候,不对称且跟横着那几个字重合.解决问题100分.,全部问题解决后奖励几千分.
分不是问题.
解决方案 »
- 怎样识别当前窗口模式是XP式、2000或98窗口或无标题窗口?
- 一个奇怪的combobox控件问题.
- 用VB 做的一个连外网的数据库的软件的问题,急!!!!!!!!
- 如何在程序中判断一个Access数据库中有几张表?
- vb如何掉web服务?
- VB2008生成的exe只能在Vista和WIN7上使用。请问如何使它兼容XP
- 关于DDE的控件制作的问题
- 鉴于本人可用分太多,故从现在开始将连续散出1045分,前十位一人十分!现在先把零头散掉!
- 哪里可以下载WIN98第二版的PWS!!急!能下载的加100分!!
- 请问vb如何实现oicq那样的分类菜单?
- VB 如何自动填写网页中的表单
- 关于智能回复功能------------------标题要长
Private Const DEFAULT_CHARSET = 1Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As LongPrivate Type LOGFONT
lfHeight As Long
lfWidth As Long
lfEscapement As Long
lfOrientation As Long
lfWeight As Long
lfItalic As Byte
lfUnderline As Byte
lfStrikeOut As Byte
lfCharSet As Byte
lfOutPrecision As Byte
lfClipPrecision As Byte
lfQuality As Byte
lfPitchAndFamily As Byte
lfFaceName(0 To LF_FACESIZE - 1) As Byte
End Type'Const PI = 3.14159265359Private Type POINTAPI
X As Long
Y As Long
End TypePrivate Const PI As Single = 3.14159265359879
Private Declare Function Polygon Lib "gdi32" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long
Dim Ptg(9) As POINTAPIPrivate Sub Command1_Click()
Dim BaseX As Integer, BaseY As Integer
Dim printX As Integer
Dim printY As Integer
Dim printAngle As Integer
Dim printR As Integer
Dim printR2 As Integer
Dim printFontHeight As Single
Dim printFontWidth As Single
Dim sngRatio As Single
' Picture1.AutoRedraw = False
Picture1.AutoRedraw = True
Picture1.Cls
Picture1.ScaleMode = 3
Picture1.DrawWidth = 1 BaseX = Me.Picture1.ScaleWidth / 2
BaseY = Me.Picture1.ScaleHeight / 6 * 3
printR = HScroll1.Value
sngRatio = 0.3
printFontWidth = printR * PI / 20 / Len(Text1) * sngRatio '* HScroll1.Value / HScroll1.Max
printFontHeight = printFontWidth * 2 '* HScroll1.Value / HScroll1.Max
printR2 = printR + printFontHeight * 10
For i = 0 To Len(Text1) - 1
printX = BaseX + printR2 * Sin(i * 180 / Len(Text1) * PI / 180 + PI / 180 * 270 + PI / 180 * 180 / Len(Text1) * (1 - sngRatio) / 2)
printY = BaseY - printR2 * Cos(i * 180 / Len(Text1) * PI / 180 + PI / 180 * 270 + PI / 180 * 180 / Len(Text1) * (1 - sngRatio) / 2)
printAngle = Int(90 - i * 180 / Len(Text1) - 180 / Len(Text1) / 2)
Call sub_RevolvePrint(printX, printY, printAngle, Mid(Text1, i + 1, 1), printFontHeight, printFontWidth)
Next i
Dim sngWidth As Single
sngWidth = printFontWidth * Len(Text2) * 30 * 1.37
Call sub_RevolvePrint(BaseX - sngWidth / 2, BaseY + 0.6 * HScroll1.Value - printFontHeight * 20, 0, Text2.Text, printFontHeight, printFontWidth)
Call sub_PrintStar(BaseX, BaseY, printR * 0.2)
' Picture1.Picture = Picture1.Image
' Picture1.DrawWidth = 2 '/ HScroll1.Max * HScroll1.Value Picture1.Line (BaseX - sngWidth / 2 * 1.2, BaseY + 0.66 * HScroll1.Value)-(BaseX + sngWidth / 2 * 1.2, BaseY + 0.664 * HScroll1.Value), vbRed, BF
' Picture1.DrawWidth = 4 '/ HScroll1.Max * HScroll1.Value Picture1.Line (BaseX - sngWidth / 2 * 1.2, BaseY + 0.7 * HScroll1.Value)-(BaseX + sngWidth / 2 * 1.2, BaseY + 0.72 * HScroll1.Value), vbRed, BF
Picture1.DrawWidth = 6 '/ HScroll1.Max * HScroll1.Value
Picture1.Circle (BaseX, BaseY), printR2 * 1.3, vbRed, , 0, 1
Picture1.DrawWidth = 2 '/ HScroll1.Max * HScroll1.Value
Picture1.Circle (BaseX, BaseY), printR2 * 1.2, vbRed, , 0, 1 Picture1.Refresh
End SubPrivate Sub sub_RevolvePrint(ByVal sigCurrentX As Single, ByVal sigCurrentY As Single _
, ByVal intAngle As Integer, ByVal strPrint As String _
, ByVal intFontHeight As Single, ByVal intFontWidth As Single)
Dim TFont As LOGFONT
Dim hOldFont As Long, hFont As Long
With TFont
.lfHeight = intFontHeight * 20 '/ Screen.TwipsPerPixelY
.lfWidth = intFontWidth * 20 '/ Screen.TwipsPerPixelX
.lfEscapement = intAngle * 10
.lfWeight = 700
.lfCharSet = DEFAULT_CHARSET
End With
hFont = CreateFontIndirect(TFont)
hOldFont = SelectObject(Me.Picture1.hdc, hFont)
With Me.Picture1
' .AutoRedraw = False
' .Cls
.CurrentX = sigCurrentX
.CurrentY = sigCurrentY
End With
Picture1.Print strPrint SelectObject Me.Picture1.hdc, hOldFont
DeleteObject hFont
' Picture1.RefreshEnd Sub
'要一个按钮一个pictureboxPrivate Sub sub_PrintStar(ByVal sigCurrentX As Single, ByVal sigCurrentY As Single _
, ByVal intPrintR As Integer)
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
cX = sigCurrentX
cY = sigCurrentY
rA = intPrintR
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)
c(0) = vbRed
c(1) = vbRed
c(2) = vbRed
c(3) = vbRed
c(4) = vbRed
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, vbRed, 5
End SubPrivate 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 SubPrivate Sub Form_Load()
Picture1.BackColor = vbWhite
Picture1.ForeColor = vbRed
Text1.Text = "中国人民共和国水电部节水办公室"
Text2.Text = "灌水专用章" HScroll1.Value = 100
HScroll1.SmallChange = 2
HScroll1.LargeChange = 20
HScroll1.Min = 50
HScroll1.Max = 150
End SubPrivate Sub HScroll1_Change()
Command1_Click
Label1.Caption = HScroll1.Value
End SubPrivate Sub HScroll1_Scroll()
Command1_Click
End Sub