⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1278.html

📁 VB技巧问答10000例 VB技巧问答10000例
💻 HTML
字号:
<html>
  <head>
    <title>如何能在萤幕及列印时,让文字左右及上下产生不同比例?</title>
  </head>
  <BODY BACKGROUND="" BGCOLOR="white" TEXT="black" LINK="blue" VLINK="#808080" ALINK="red">
    <center>
      <h1>如何能在萤幕及列印时,让文字左右及上下产生不同比例?</h1>
    </center>

<HR><p>
Posted by <a href="mailto:n7786226@ms5.hinet.net">小徐</a> on November 14, 1997 at 22:51:28:<p>
类似倚天中文下~w2z1;之效果让文字可以依不同比例拉长拉宽<br>同时让文字可以旋转若干角度之效果(例90度等类似~v;)<br>以下是我在网路上看到类似的程式可是经修改测试无效<br>我使用vb6.0中文专业版<br>范例说明:<br>*********<br>1. 先于表格上放置两个命令按钮物件Commadn1及Command2,其功能如下:<p>   - Command1为执行旋转文字的工作,首先将表格画面清除再执行一个回圈给予<br>     不同的角度去呼叫副程式RotaText来绘制旋转的文字。<br>   - Command2为执行End函式结束程式。<br>    <br>2. 在副程式RotaText中首先定义一个LOGFONT的资料结构如下:<p>  Type LOGFONT<br>    '字形的高度,如值为0则使用Default的高度<br>    lfHeight As Integer<br>    '字形的宽度,如值为0则使用Default的宽度<br>    lfWidth As Integer<br>    '指定角度(其值为十分之一度,如180度则值为1800)<br>    lfEscapement As Integer<br>    '指定字元的方向,这值是被忽视的<br>    lfOrientation As Integer<br>    '字体的线宽度<br>    lfWeight As Integer<br>    '如值为True表示斜体字<br>    lfItalic As String * 1<br>    '如值为True表示有底线<br>    lfUnderline As String * 1<br>    '如值为True表示有中线<br>    lfStrikeOut As String * 1<br>    '字元集如ANSI_CHARSET,OEM_CHARSET<br>    lfCharSet As String * 1<br>    '输出精密度<br>    lfOutPrecision As String * 1<br>    '剪贴精密度<br>    lfClipPrecision As String * 1<br>    '品质层次 <br>    lfQuality As String * 1<br>    '选择字体类别 <br>    lfPitchAndFamily As String * 1<br>    '使用的字形<br>    lfFaceName As String * LF_FACESIZE<br>  End Type<p>2. 在填满LOGFONT的资料后呼叫视窗函式CreateFontIndirec建立一个逻辑字形,<br>   并呼叫视窗函式SelectObject选择这个新字形,此函式会传回上一次所使用的<br>   字形并将值存入hOldFont变数中,再呼叫视窗函式TextOut将文字输出到表格<br>   上,文字于表格内印出后再次的呼叫视窗函式SelectObject选择原来的字形<br>   (hOldFont)后呼叫视窗函式DeleteObject把新建立的字形从记忆体中删除。<p><br>函式说明:<br>*********<br>1. CreateFontIndirect% (lpLogFont As LOGFONT) <br>   功能:依指定的LOGFONT资料结构建立一个逻辑字形<br>   宣告:<br>   Declare Function CreateFontIndirect Lib "gdi32" <br>     Alias "CreateFontIndirectA" <br>        (lpLogFont As LOGFONT) As Long <br>   参数说明:<br>	lpLogFont:指定一个LOGFONT的资料结构。<br>   返回值:如成功则传回新字形的视窗处理,否则传回NULL。<p>2. SelectObject% ( hDC As Integer,Object As Integer)  <br>   功能:于设备环境中选择一个物件如笔,笔刷,字形,位元图,区域,调色盘<br>   宣告:<br>   Declare Function SelectObject Lib "user32" <br>     Alias "SelectObject" <br>        (ByVal hdc As Long, ByVal hObject As Long) As Long<br>   参数说明:<br>	hDC:指定一个设备环境处理。<br>	Object: 指定选择的笔,笔刷,字形,位元图,区域,调色盘。<br>   返回值:如成功则传回上一次所使用的物件的视窗处理,否则传回NULL。<p>3. TextOut% ( hDC%, X%, Y%, Text$, nCount%) <br>   功能:于设备环境中列印文字<br>   宣告:<br>   Declare Function TextOut Lib "gdi32" <br>     Alias "TextOutA" <br>        (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, <br>           ByVal lpString As String, ByVal nCount As Long) As Long<br>   参数说明:<br>	hDC:指定一个设备环境处理。<br>	X:字串开始位置的水平逻辑座标。<br>	Y:字串开始位置的垂直逻辑座标。<br>	Text:指定输出的文字。<br>	nCount:指定输出的文字的长度。<br>   返回值:如成功则True,否则传回False。<p>4. DeleteObject ( Object% )<br>   功能:从记忆体中删除笔,笔刷,字形,位元图,区域,调色盘等物件<br>   宣告:<br>   Declare Function DeleteObject Lib "gdi32" <br>     Alias "DeleteObject" <br>        (ByVal hObject As Long) As Long<br>   参数说明:<br>	Object: 指定选择的笔,笔刷,字形,位元图,区域,调色盘。<br>   返回值:无。<p><br>程式说明:<br>*********<br>1. 从表单的File选项中,选择 NEW PROJECT(ALT,F,N)<br>2. 放置两个命令按钮物件(Command1-2)于表格上<br>3. 从表单的File选项中,选择NEW Module(ALT,F,M),并储存档名为MODULE1.BAS<br>4. 依物件特性表设定各物件特性(Property)的值(Value)<br>5. 依程式清单中的程式码,放入各物件的事件程序中。<br>6. 从表单的File选项中,选择Save Project As...(ALT,F,E)储存专题。<br>7. 执行程式,按下Commadn1表格会出现旋转180度的文字。<p><br>物件特性设定(未更改的值不列入此表):<br>***********************************<br>===============================================<br>物件名称(Object) 物件特性(Property) 值(Value)<br>===============================================<br>Form1             Caption        旋转字形<br>Command1          FontSize       12<br>                  Caption        执行 <br>Command2          FontSize       12<br>                  Caption        结束 <br>===============================================<p><br>程式内容:<br>*********<br>请将下列程式输入 Form1-Command1.Click <br>======================================================================<br>Sub Command1_Click ()<br>'清除画面<br>form1.Cls<br>'设定角度<br>For nAngle% = 20 To 80 Step 10<br>    '设定前景颜色<br>    form1.ForeColor = QBColor(nAngle% / 15)<br>    '旋转列印<br>    RotaText (form1.hDC), "> 文字旋转测试 !", 10, 290, 30, nAngle%<br>Next<br>End Sub<br>======================================================================<p>请将下列程式输入 Form1-Command1.Click <br>======================================================================<br>Sub Command2_Click ()<br>'结束程式<br>End<br>End Sub<br>======================================================================<p>请将下列程式输入 Module1-General.declarations <br>======================================================================<br>'定义整数从字母A到Z<br>DefInt A-Z<br>'全域性常数<br>'字形大小<br>Global Const LF_FACESIZE = 32<br>'字形性质<br>Global Const FW_DONTCARE = 0<br>Global Const FW_THIN = 100<br>Global Const FW_EXTRALIGHT = 200<br>Global Const FW_LIGHT = 300<br>Global Const FW_NORMAL = 400<br>Global Const FW_MEDIUM = 500<br>Global Const FW_SEMIBOLD = 600<br>Global Const FW_BOLD = 700<br>Global Const FW_EXTRABOLD = 800<br>Global Const FW_HEAVY = 900<br>Global Const FW_ULTRALIGHT = FW_EXTRALIGHT<br>Global Const FW_REGULAR = FW_NORMAL<br>Global Const FW_DEMIBOLD = FW_SEMIBOLD<br>Global Const FW_ULTRABOLD = FW_EXTRABOLD<br>Global Const FW_BLACK = FW_HEAVY<br>'字元集<br>Global Const ANSI_CHARSET = 0<br>Global Const SYMBOL_CHARSET = 2<br>Global Const SHIFTJIS_CHARSET = 128<br>Global Const OEM_CHARSET = 255<br>'输出精密度<br>Global Const OUT_DEFAULT_PRECIS = 0<br>Global Const OUT_STRING_PRECIS = 1<br>Global Const OUT_CHARACTER_PRECIS = 2<br>Global Const OUT_STROKE_PRECIS = 3<br>Global Const OUT_TT_PRECIS = 4<br>Global Const OUT_DEVICE_PRECIS = 5<br>Global Const OUT_RASTER_PRECIS = 6<br>Global Const OUT_TT_ONLY_PRECIS = 7<br>'剪贴精密度<br>Global Const CLIP_DEFAULT_PRECIS = 0<br>Global Const CLIP_CHARACTER_PRECIS = 1<br>Global Const CLIP_STROKE_PRECIS = 2<br>'品质层次<br>Global Const DEFAULT_QUALITY = 0<br>Global Const DRAFT_QUALITY = 1<br>Global Const PROOF_QUALITY = 2<br>'选择字体类别<br>Global Const DEFAULT_PITCH = 0<br>Global Const FIXED_PITCH = 1<br>Global Const VARIABLE_PITCH = 2<br>'使用的字形<br>Global Const FF_DONTCARE = 0<br>Global Const FF_ROMAN = 16<br>Global Const FF_SWISS = 32<br>Global Const FF_MODERN = 48<br>Global Const FF_SCRIPT = 64<br>Global Const FF_DECORATIVE = 80<br>'字形结构<br>Type LOGFONT<br>    lfHeight As Integer<br>    lfWidth As Integer<br>    lfEscapement As Integer<br>    lfOrientation As Integer<br>    lfWeight As Integer<br>    lfItalic As String * 1<br>    lfUnderline As String * 1<br>    lfStrikeOut As String * 1<br>    lfCharSet As String * 1<br>    lfOutPrecision As String * 1<br>    lfClipPrecision As String * 1<br>    lfQuality As String * 1<br>    lfPitchAndFamily As String * 1<br>    lfFaceName As String * LF_FACESIZE<br>End Type<br>'宣告视窗API<br>'建立新的逻辑字形<br>Declare Function CreateFontIndirect Lib "GDI" (lpLogFont As LOGFONT) As Integer<br>'选择设备环境中的物件(笔,位元图,字形)<br>Declare Function SelectObject Lib "GDI" (ByVal hDC%, ByVal Object%) As Integer<br>'文字输出<br>Declare Function TextOut Lib "GDI" (ByVal hDC%, ByVal X%, ByVal Y%, ByVal Text$, ByVal nCount%) As Integer<br>'从记忆体中删除所选择的物件(笔,位元图,字形)<br>Declare Sub DeleteObject Lib "GDI" (ByVal Object%)<br>======================================================================<p>请将下列程式输入 Module1-RotaText<br>======================================================================<br>Sub RotaText (hDC As Integer, Text$, X As Integer, Y As Integer, Size As Integer, LineAngle As Integer)<br>'*参数 hDC ---> 输出的设备环境<br>'*     Text$ ---> 欲显示之文字<br>'*     X ---> 水平座标<br>'*     Y ---> 垂直座标<br>'*     Size ---> 字形大小<br>'*     LineAngle ---> 显示角度<br>'定义整数变数<br>Dim hFont As Integer, hOldFont As Integer<br>'定义Font结构变数<br>Dim Font As LOGFONT<br>'填满Font结构的资料<br>Font.lfHeight = Size<br>Font.lfWidth = 0<br>'旋转角度,视窗使用1/10度为单位<br>Font.lfEscapement = LineAngle * 10<br>'使用有效字形<br>Font.lfPitchAndFamily = Chr$(VARIABLE_PITCH Or FF_DONTCARE)<br>'使用ANSI字元集<br>Font.lfCharSet = Chr$(ANSI_CHARSET)<br>Font.lfQuality = Chr$(PROOF_QUALITY)<br>Font.lfWeight = FW_NORMAL<br>Font.lfFaceName = ""<br>'建立字形<br>hFont = CreateFontIndirect(Font)<br>'选择新字形<br>hOldFont = SelectObject(hDC, hFont)<br>'取得文字长度<br>nChars = Len(Text$)<br>'依座标列印文字到设备环境<br>Result = TextOut(hDC, X, Y, Text$, nChars)<br>'选择旧字形<br>hFont = SelectObject(hDC, hOldFont)<br>'删除新字形物件<br>DeleteObject hFont<br>End Sub<br>======================================================================<p>--- End of File ---
<br>
<p>
<a name="followups">Follow Ups:</a><br>
<ul><!--insert: 1278-->
<!--top: 1301--><li><a href="1301.html"><b>Re: 好长喔!</b></a> 小贤 <i>18:19:35 11/16/97</i>
(<!--responses: 1301-->2)
<ul><!--insert: 1301-->
<!--top: 1377--><li><a href="1377.html"><b>相同的困扰 ????</b></a> 小林 <i>22:48:03 11/23/97</i>
(<!--responses: 1377-->1)
<ul><!--insert: 1377-->
<!--top: 1381--><li><a href="1381.html"><b>Re: 相同的困扰 ????</b></a> 小贤 <i>23:37:39 11/23/97</i>
(<!--responses: 1381-->0)
<ul><!--insert: 1381-->
</ul><!--end: 1381-->
</ul><!--end: 1377-->
</ul><!--end: 1301-->
</ul><!--end: 1278-->
<br><HR><p>

</body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -