字体旋转竖排,最近一直在网上找,大多是利用TLF等,太麻烦.终于被我找到了集成Sprit来解决这个问题,封装了一下,贴出来,备用:
集成Sprit的核心类
package { import flash.display.Sprite; import flash.text.engine.ElementFormat; import flash.text.engine.FontDescription; import flash.text.engine.TextBlock; import flash.text.engine.TextElement; import flash.text.engine.TextLine; import flash.text.engine.TextRotation; public class RoutaTextAs extends Sprite{//"MS Mincho" 一个字体 /** * 旋转字体 * @param text 待旋转的文档 * @param fontSize * @param fontType * @param rotate 旋转度 * @param theHeight 高 * @param theWidth 宽 * @param x * @param y * @param spaceBetween 字体空间 * */ public function RoutaTextAs(text:String="" , fontSize:int=15 , fontType:String="宋体" , rotate:String= TextRotation.ROTATE_90 , theHeight:int=60 , theWidth:int=60, x:int=0 , y:int=0 , spaceBetween:int=20):void { var format:ElementFormat = new ElementFormat(); format.fontSize = fontSize; format.fontDescription = new FontDescription(fontType); var textBlock:TextBlock = new TextBlock(); textBlock.content = new TextElement(text, format); textBlock.lineRotation = rotate;//方向 var linePosition:Number =x; var previousLine:TextLine = null; while (true) { var textLine:TextLine = textBlock.createTextLine(previousLine, theHeight); trace(this.width); if (textLine == null || this.width > theWidth) { break; } textLine.y = y; textLine.x = linePosition; linePosition -= spaceBetween; addChild(textLine); previousLine = textLine; } } } }
Spirt必须add在UIComponent里面,包装了一层,可以直接使用:
<?xml version="1.0" encoding="utf-8"?> <mx:UIComponent xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init()"> <mx:Script> <![CDATA[ import flash.text.engine.TextRotation; import mx.events.FlexEvent; public var text:String = "";//要加入的字体 public var fontSize:int = 15 ; public var fontType:String ="宋体"; public var rotate:String = TextRotation.ROTATE_90;//旋转角度 public var spaceBetween:int = 18;//旋转角度 protected function init():void{ var tt:RoutaTextAs = new RoutaTextAs(text , fontSize , fontType , rotate , this.height , this.width ,this.x , this.y , spaceBetween); this.addChild(tt); } ]]> </mx:Script> </mx:UIComponent>
一些参数需要自己调整,下面是Application
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="application1_initializeHandler(event)"> <mx:Script> <![CDATA[ import flash.text.engine.TextRotation; import mx.core.UIComponent; import mx.events.FlexEvent; protected function application1_initializeHandler(event:FlexEvent):void{ var rr:RoutaText = new RoutaText(); rr.height = 60; rr.width = 150; rr.spaceBetween = 55; rr.text = "猩红的撒旦斯蒂芬桑德菲杰撒" + "地方速度快李凤江桑德菲杰思考了打飞机克里" + "斯丁积分卡螺丝刀积分卡螺丝" + "刀杰弗里斯大开间付款了三等奖分散度看了 飞"; ttt.addChild(rr); } ]]> </mx:Script> <mx:Box id="ttt" x="409" y="151" width="250"/> </mx:Application>
用吧!
RoutaTextAs 修改了一下.支持横排很竖排 package { import flash.display.Sprite; import flash.text.engine.ElementFormat; import flash.text.engine.FontDescription; import flash.text.engine.TextBlock; import flash.text.engine.TextElement; import flash.text.engine.TextLine; import flash.text.engine.TextRotation; public class RoutaTextAs extends Sprite{//"MS Mincho" 一个字体 /** * 旋转字体 * @param text 待旋转的文档 * @param fontSize * @param fontType * @param rotate 旋转度 * @param theHeight 高 * @param theWidth 宽 * @param x * @param y * @param spaceBetween 字体空间 * */ public function RoutaTextAs(text:String="" , fontSize:int=15 , fontType:String="宋体" , rotate:String= TextRotation.ROTATE_90 , theHeight:int=60 , theWidth:int=60, x:int=0 , y:int=0 , spaceBetween:int=20):void { var format:ElementFormat = new ElementFormat(); format.fontSize = fontSize; format.fontDescription = new FontDescription(fontType); var textBlock:TextBlock = new TextBlock(); textBlock.content = new TextElement(text, format); textBlock.lineRotation = rotate;//方向 var previousLine:TextLine = null; if(rotate == TextRotation.ROTATE_90){ var linePosition:Number = x; while (true) { var textLine:TextLine = textBlock.createTextLine(previousLine, theHeight); if (textLine == null || this.width > theWidth) { break; } textLine.y = y; textLine.x = linePosition; linePosition += spaceBetween; addChild(textLine); previousLine = textLine; } }else if(rotate == TextRotation.ROTATE_0){ var linePosition:Number = y + fontSize ; while (true) { var textLine:TextLine = textBlock.createTextLine(previousLine, theWidth); if (textLine == null ||( this.height+fontSize) >= theHeight) { break; } textLine.y = linePosition; textLine.x = x; linePosition += spaceBetween; addChild(textLine); previousLine = textLine; } } } } }
相关推荐
本主题将深入探讨如何实现一个“竖排Menu”在Flex中的应用,以此来满足非传统布局的需求。 标题“flex 竖排Menu”指的是在Flex环境中创建一个垂直排列的菜单条。默认情况下,Flex的MenuBar组件是水平布局的,但通过...
在Android开发中,有时我们需要实现一些特殊的UI效果,比如文本竖向排列,这在传统的TextView中并不直接支持。本文将详细讲解如何通过自定义...这就是自定义TextView实现字体竖排的基本过程,希望对你有所帮助。
本教程将详细讲解如何利用Paint和Canvas在Android应用中实现在竖直方向上写字。 1. **Canvas与Paint基础** - **Canvas**:Canvas是Android中的画布,提供了各种绘制方法,如drawRect(), drawText()等,让我们能够...
根据给定的文件信息,我们可以深入探讨编程技巧中关于旋转字体的具体实现方法,尤其是在Windows API环境下的应用。本文将详细解析如何使用Windows GDI(Graphics Device Interface)来创建旋转字体,以及通过具体的...
这个例子展示了如何在Flex3中创建一个竖排的TabNavigator。这种自定义布局的方法可以应用于其他需要垂直排列组件的情况,提供了更大的设计灵活性。在实际开发中,你可能还需要考虑一些细节,比如标签的间距、选中...
Qt 旋转文字代码实现是利用 Qt 库中的 QPainter 类实现文字旋转的方法。该方法主要使用 QPainter 的 rotate 和 translate 函数来实现文字旋转。 要实现文字旋转,需要四个步骤: 1. 变换旋转中心:使用 translate ...
本教程将详细介绍如何使用CSS实现文字竖排效果。 首先,我们可以使用`writing-mode`属性来改变文本的书写方向。这个属性允许我们将文本从左到右(默认的`lr-tb`),改为从右到左(`rl-tb`),或者从上到下(`tb-rl`...
总的来说,ArcGIS Maplex提供了一套强大的工具来实现竖排文字,通过精确控制标注的位置、旋转和对齐方式,你可以创建出专业且美观的地图。理解并熟练掌握这些功能,将极大地提升你的地图制作效率和质量。在实际操作...
3. 使用`transform`属性:通过旋转元素,也可以实现竖排文本的效果。例如,`transform: rotate(90deg);`会将元素及其内容旋转90度,使其看起来是竖直的。不过,这种方法可能会影响文本的可读性和其他布局元素的对齐...
总的来说,【文字竖排编辑器】是一个展示Winform自定义控件功能的实例,通过源代码学习,我们可以了解到如何利用.NET Framework提供的API实现特定的界面需求。对于开发者来说,这样的项目不仅能提升编程技能,还能...
标题中的“Flex Label控件竖排显示文字的实现代码”就是这样一个需求,描述中提到的方法提供了一种将Label控件的文字转换为垂直排列的解决方案。 Flex是Adobe公司推出的一种基于ActionScript 3.0的开源框架,用于...
在VB中,要实现竖排文本,开发者通常需要利用Graphics对象和TextRenderer类来绘制文本,设置适当的旋转角度使文字呈现垂直状态。例如,可以使用`Graphics.DrawString`方法,并配合一个旋转矩阵,将文本绘制在画布上...
1. 包里包含源码和一个测试用例,可直接看到效果。 2. 竖排文字的一些说明,移步以下链接 https://blog.csdn.net/piaoyun29/article/details/123255514
在本文中,我们将深入探讨如何在WPF中实现竖排按钮显示,并了解相关技术细节。 首先,WPF提供了多种布局系统,包括StackPanel、Grid、Canvas等,其中StackPanel特别适合用来实现竖排布局。StackPanel会按照其...
使用python 2.7,初学,代码比较简单。 numPrinter.py 复制代码 代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- ”’ @Author:Quico Tomy @Function:Input a phone number and print by line ...
### 使用VC实现竖写汉字的方法 #### 背景与目的 ...通过以上步骤,可以在Windows系统中利用VC实现竖写汉字的效果。这种方法不仅适用于简单的演示或测试环境,也可以用于开发具有特殊需求的应用程序。
通过使用`<ul>`和`<li>`标签构建菜单,然后利用CSS的`display`属性、选择器以及响应式设计,我们可以定制出符合需求的竖排菜单。在提供的压缩包中,`menu.html`包含了HTML结构,而`css`文件则是对应的CSS样式,你...
为了使菜单能够垂直排列,我们可以利用无序列表 `<ul>` 和列表项 `<li>` 来构建菜单结构,并结合CSS中的浮动或Flex布局属性来实现竖排效果。 ```html (this)" onmouseout="Off(this)" onclick="Down(this)"> 首页...
实现文字竖排 实现方法,传入一个字符串,代表横排文字。传入一个整型值代表折行的位置。返回一个字符串,输出该字符串则横排文字已被转换为竖排文字(从右向左)
在Windows系统中,通过利用某些特定的“躺”着的字体以及适当的图形操作,可以轻松实现这一功能。本文将详细介绍如何在VC++中实现文字竖排的简单方法。 首先,我们要了解“躺”着的字体。在Windows中,存在一些特殊...