电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 网络编程 -> ASP教程
在vb中建立可旋转的文本特效_visualbasic教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
在VB中利用Windows的API函数可以实现很多的VB无法实现的扩展功能,下面的程序介绍的是如何通过调用Windows中的API函数实现文本旋转显示的特级效果。
  首先建立一个工程文件,然后选菜单中的Project|AddClassModule加入一个新的类文件,并将这个类的Name属性改变为APIFont,然后在类的代码窗口中加入以下的代码:
  OptionExplicit

  PrivateDeclareFunctionSelectClipRgnLib“gdi32”(ByValhdcAsLong,ByValhRgnAsLong)AsLong
  PrivateDeclareFunctionCreateRectRgnLib“gdi32”(ByValX1AsLong,ByValY1AsLong,ByValX2AsLong,ByValY2AsLong)AsLong
  PrivateDeclareFunctionSetTextColorLib“gdi32”(ByValhdcAsLong,ByValcrColorAsLong)AsLong
  PrivateDeclareFunctionDeleteObjectLib“gdi32”(ByValhObjectAsLong)AsLong
  PrivateDeclareFunctionCreateFontIndirectLib“gdi32”Alias“CreateFontIndirectA”(lpLogFontAsLOGFONT)AsLong
  PrivateDeclareFunctionSelectObjectLib“gdi32”(ByValhdcAsLong,ByValhObjectAsLong)AsLong
  PrivateDeclareFunctionTextOutLib“gdi32”Alias“TextOutA”(ByValhdcAsLong,ByValXAsLong,ByValYAsLong,ByVallpStringAsString,ByValnCountAsLong)AsLong
  PrivateDeclareFunctionSetTextAlignLib“gdi32”(ByValhdcAsLong,ByValwFlagsAsLong)AsLong

  PrivateTypeRECT
  LeftAsLong
  TopAsLong
  RightAsLong
  BottomAsLong
  EndType

  PrivateConstTA_LEFT=0
  PrivateConstTA_RIGHT=2
  PrivateConstTA_CENTER=6
  PrivateConstTA_TOP=0
  PrivateConstTA_BOTTOM=8
  PrivateConstTA_BASELINE=24

  PrivateTypeLOGFONT
  lfHeightAsLong
  lfWidthAsLong
  lfEscapementAsLong
  lfOrientationAsLong
  lfWeightAsLong
  lfItalicAsByte
  lfUnderlineAsByte
  lfStrikeOutAsByte
  lfCharSetAsByte
  lfOutPrecisionAsByte
  lfClipPrecisionAsByte
  lfQualityAsByte
  lfPitchAndFamilyAsByte
  lfFaceNameAsString*50
  EndType

  Privatem_LFAsLOGFONT
  PrivateNewFontAsLong
  PrivateOrgFontAsLong
  PublicSubCharPlace(oAsObject,txt$,X,Y)
  DimThrowAsLong
  DimhregionAsLong
  DimRAsRECT

  R.Left=X
  R.Right=X+o.TextWidth(txt$)*2
  R.Top=Y
  R.Bottom=Y+o.TextHeight(txt$)*2

  hregion=CreateRectRgn(R.Left,R.Top,R.Right,R.Bottom)
  Throw=SelectClipRgn(o.hdc,hregion)
  Throw=TextOut(o.hdc,X,Y,txt$,Len(txt$))
  DeleteObject(hregion)
  EndSub
  PublicSubSetAlign(oAsObject,Top,BaseLine,Bottom,Left,Center,Right)
  DimVertAsLong
  DimHorzAsLong

  IfTop=TrueThenVert=TA_TOP
  IfBaseLine=TrueThenVert=TA_BASELINE
  IfBottom=TrueThenVert=TA_BOTTOM
  IfLeft=TrueThenHorz=TA_LEFT
  IfCenter=TrueThenHorz=TA_CENTER
  IfRight=TrueThenHorz=TA_RIGHT
  SetTextAligno.hdc,VertOrHorz
  EndSub
  PublicSubsetcolor(oAsObject,CvalueAsLong)
  DimThrowAsLong

  Throw=SetTextColor(o.hdc,Cvalue)
  EndSub
  PublicSubSelectOrg(oAsObject)
  DimThrowAsLong

  NewFont=SelectObject(o.hdc,OrgFont)
  Throw=DeleteObject(NewFont)
  EndSub
  PublicSubSelectFont(oAsObject)
  NewFont=CreateFontIndirect(m_LF)
  OrgFont=SelectObject(o.hdc,NewFont)
  EndSub
  PublicSubFontOut(text$,oAsControl,XX,YY)
  DimThrowAsLong

  Throw=TextOut(o.hdc,XX,YY,text$,Len(text$))
  EndSub

  PublicPropertyGetWidth()AsLong
  Width=m_LF.lfWidth
  EndProperty

  PublicPropertyLetWidth(ByValWAsLong)
  m_LF.lfWidth=W
  EndProperty

  PublicPropertyGetHeight()AsLong
  Height=m_LF.lfHeight
  EndProperty

  PublicPropertyLetHeight(ByValvNewValueAsLong)
  m_LF.lfHeight=vNewValue
  EndProperty

  PublicPropertyGetEscapement()AsLong
  Escapement=m_LF.lfEscapement
  EndProperty

  PublicPropertyLetEscapement(ByValvNewValueAsLong)
  m_LF.lfEscapement=vNewValue
  EndProperty

  PublicPropertyGetWeight()AsLong
  Weight=m_LF.lfWeight
  EndProperty

  PublicPropertyLetWeight(ByValvNewValueAsLong)
  m_LF.lfWeight=vNewValue
  EndProperty

  PublicPropertyGetItalic()AsByte
  Italic=m_LF.lfItalic
  EndProperty

  PublicPropertyLetItalic(ByValvNewValueAsByte)
  m_LF.lfItalic=vNewValue
  EndProperty

  PublicPropertyGetUnderLine()AsByte
  UnderLine=m_LF.lfUnderline
  EndProperty

  PublicPropertyLetUnderLine(ByValvNewValueAsByte)
  m_LF.lfUnderline=vNewValue
  EndProperty

  PublicPropertyGetStrikeOut()AsByte
  StrikeOut=m_LF.lfStrikeOut
  EndProperty

  PublicPropertyLetStrikeOut(ByValvNewValueAsByte)
  m_LF.lfStrikeOut=vNewValue
  EndProperty

  PublicPropertyGetFaceName()AsString
  FaceName=m_LF.lfFaceName
  EndProperty

  PublicPropertyLetFaceName(ByValvNewValueAsString)
  m_LF.lfFaceName=vNewValue
  EndProperty

  PrivateSubClass_Initialize()
  m_LF.lfHeight=30
  m_LF.lfWidth=10
  m_LF.lfEscapement=0
  m_LF.lfWeight=400
  m_LF.lfItalic=0
  m_LF.lfUnderline=0
  m_LF.lfStrikeOut=0
  m_LF.lfOutPrecision=0
  m_LF.lfClipPrecision=0
  m_LF.lfQuality=0
  m_LF.lfPitchAndFamily=0
  m_LF.lfCharSet=0
  m_LF.lfFaceName="Arial"+Chr(0)
  EndSub
  在工程文件的Form1中加入一个PictureBox和一个CommandButton控件,然后在Form1的代码窗口中加入以下的代码:
  OptionExplicit

  DimAFAsAPIFont
  DimX,YAsInteger

  PrivateSubCommand1_Click()
  DimIAsInteger

  SetAF=Nothing
  SetAF=NewAPIFont
  Picture2.Cls
  ForI=0To3600Step360
  AF.Escapement=I
  AF.SelectFontPicture2
  X=Picture2.ScaleWidth/2
  Y=Picture2.ScaleHeight/2
  在字符串后面要加入7个空格
  AF.FontOut“电脑商情报第42期”,Picture2,X,Y
  AF.SelectOrgPicture2
  NextI
  EndSub

  PrivateSubForm_Load()
  Picture2.ScaleMode=3
  EndSub
  运行程序,点击Form上的Command1按钮,在窗口的图片框就会出现旋转的文本显示,程序的效果如图所示:
  值得注意的问题是,由于Windows的动态连接库的中英文版本的关系,在一些系统中显示中文可能会有一些问题,大家可能看到,上面程序中的语句:AF.FontOut“脑商情报第42期”,Picture2,X,Y中的字符串后面有7个空格,这是对于“电脑商情报第42期”中的7个中文字符,中文系统计算的是7个字符,但是实际它们占据的是14个字节的空间,所以在输出时要在后面添加7个空格做“替身”。上面的程序在中文Win98,VB6下运行通过。->


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·将html表单数据存储为xml格式 - 1_asp实例
·一个功能完善的专栏管理的程序->这是asp.net的第二个应用(五)_asp实例
·通过事例学习.net的webforms技术(一)_asp实例
·通过事例学习.net的webforms技术(二)_asp实例
·如何用javascript识别netscape 6 浏览器_asp技巧
·使用javascript实现邮箱快速登录的方法!!_asp技巧
·如何从数据库得到一个列表表单_asp技巧
·使用cookie来跟踪用户_asp技巧
·一个免费的简单聊天室源代码_asp实例
·stripnonnumeric函数源程序_asp实例

最新文章
·ASP基础教程:其它的ASP常用组件
·ASP基础教程:学习ASP中子程序的应用
·ASP基础教程之ASP程序对Cookie的处理
·ASP基础教程之ASP AdRotator组件的使用
·ADO初学者教程:ADO 通过GetString()加速脚本
·ASP技巧实例:几行代码解决防止表单重复提交
·ASP常见数学函数 Abs Atn Cos 等详细详解[ 来源:网页教学网 | 作者: | 时间:2007-09-12 10:57:29 | 收藏本文 ] 【大 中 小】【名称】
·ASP基础教程之ASP AdRotator 组件的使用
·ASP读sql数据时出现乱码问题的解决方法
·PHP+MYSQL实例:网站在线人数的程序代码


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号