`

[转]自写类笔记-描边文字

阅读更多
http://uh.9ria.com/space-12147-do-blog-id-374.html

package{
 import flash.display.Bitmap;
 import flash.display.BitmapData;
 import flash.geom.Rectangle;
 import flash.text.TextField;
 import flash.text.TextFormat;

 public class BoundLabel extends Bitmap
 {
  private var _text:String="";
  private var _textField:TextField;
  public var defaultTextFormat:TextFormat=new TextFormat();
  public function BoundLabel(){
   super();
  }
  public function get text():String{
   return _text;
  }
  public function set text(value:String):void{
   if (_text==value) return;
   _text=value;
   _draw();
  }
  public function setTextFormat(format:TextFormat,beginIndex:int=-1,endIndex:int=-1):void{
   if (endIndex==-1){
    endIndex=_textField.text.length;
   }
   _textField.setTextFormat(format,beginIndex,endIndex);
   _parseText();
  }
  public function setBound(color:uint,beginIndex:int=-1,endIndex:int=-1):void{
   _addBound(color,beginIndex,endIndex);
  }
  private function _parseText():void{
   var _bitmapData:BitmapData;
   _textField.width=_textField.textWidth+5;
   _textField.height=_textField.textHeight+5;
   
   _bitmapData=new BitmapData(_textField.width,_textField.height,true,0);
   _bitmapData.draw(_textField);
   
   if (bitmapData) bitmapData.dispose();
   bitmapData=_bitmapData;
  }
  private function _draw():void{
   _textField=new TextField();
   _textField.defaultTextFormat=defaultTextFormat;
   _textField.text=_text;
   _parseText();
  }
  private function _trySetPixel32(toBitmapData_:BitmapData,i_:int,j_:int,color_:uint):void{
   if (i_>=0 && j_>=0 && i_<toBitmapData_.width && j_<toBitmapData_.height && toBitmapData_.getPixel32(i_,j_)==0){
    toBitmapData_.setPixel32(i_,j_,color_);
   }
  }
  private function _addBound(color:uint,beginIndex:int=-1,endIndex:int=-1):void{
   if (!bitmapData || color==0) return;
   
   var _rect:Rectangle=new Rectangle();
   if (beginIndex==-1) beginIndex=0;
   if (endIndex==-1) endIndex=_textField.text.length;
   for (var _i:int=beginIndex;_i<endIndex;_i++){
    _rect=_rect.union(_textField.getCharBoundaries(_i));
   }
   
   var _newBitmapData:BitmapData=new BitmapData(bitmapData.width,bitmapData.height,true,0);
   for (_i=0;_i<bitmapData.width;_i++){
    for (var _j:int=0;_j<bitmapData.height;_j++){
     if (bitmapData.getPixel32(_i,_j)!=0) {
      _newBitmapData.setPixel32(_i,_j,bitmapData.getPixel32(_i,_j));
      
      if (_rect.contains(_i,_j)){
       _trySetPixel32(_newBitmapData,_i-1,_j,color);
       _trySetPixel32(_newBitmapData,_i+1,_j,color);
       _trySetPixel32(_newBitmapData,_i,_j-1,color);
       _trySetPixel32(_newBitmapData,_i,_j+1,color);
      }
     }
    } 
   }
   bitmapData.dispose();
   bitmapData=_newBitmapData;
  }
 }
}


//setBound会被任何一种其他的操作覆盖,要最后执行。
分享到:
评论

相关推荐

    PS基础第四天笔记 PS基础第四天笔记

    以上内容涵盖了PS基础第四天笔记中的关键知识点,包括文字工具的基本使用方法、文字编辑技巧、画笔工具的使用以及路径描边等高级功能。这些知识点对于初学者来说非常重要,能够帮助他们更好地掌握Photoshop的基础...

    PS笔记 本人制作

    【Photoshop(PS)基础操作及效果制作】 ...以上是PS笔记中提及的一些基本操作和效果制作方法,掌握这些技巧可以极大地提高图像编辑效率,并创造出各种视觉效果。在实际操作中,可根据需要灵活组合使用。

    彩虹色文本描边动画网页特效.rar

    这种特效能够使网页中的文字在视觉上更加吸引人,为用户带来生动有趣的体验。在网页设计中,特效的运用能够提升用户的互动性和页面的美观度。 【描述】提及的“非常实用的特效代码,可以完美运行,可以二次修改!”...

    Director笔记.pdf

    - **文字处理**:由于Director的文字特效有限,可能需要在Photoshop中制作带阴影或描边的文字,然后导出为PNG图片使用。 4. **界面布局与按钮设计**: - **章节标题按钮**:每个标题需有两个状态(正常和高亮),...

    安卓Android源码——(Paint画笔).zip

    Paint类是Android SDK中的`android.graphics.Paint`,它提供了一系列的方法来设置绘图的属性,如颜色、线条宽度、抗锯齿设置、文字大小、对齐方式等。这些属性可以应用于Canvas上的各种绘制操作,如drawRect、...

    flash快捷键--自己总结

    8. 文本工具:T - 输入和编辑文字。 9. 椭圆工具:O - 画圆形或椭圆形。 10. 矩形工具:R - 画矩形或正方形。 11. 铅笔工具:Y - 自由绘图,可以进行平滑处理。 12. 刷子工具:B - 填充颜色或效果,类似于画笔。 13....

    PS_CS5笔记本制作

    1. **规划设计**:确定笔记本的尺寸、页数、用途(如日记、笔记、绘图等),这将影响设计的布局和元素选择。 2. **创建新项目**:在Photoshop CS5中,新建一个文档,设置合适的宽度、高度和分辨率,以匹配预期的打印...

    css3 svg文字轮廓边框特效.zip

    这段代码会在SVG画布上创建一个有描边的文字。通过调整`x`和`y`坐标,我们可以改变文字的位置;`font-size`设置字体大小;`fill`定义填充颜色,这里是白色;`stroke`是描边颜色,这里是黑色;`stroke-width`设置描边...

    AI(illustrate)快捷键-课堂笔记,自己总结

    44. **文字转曲**:`ctrl+shift+O`将文本转换为路径。 45. **形状模式组合**:按`alt`单击两个图形,可以进行相加、相减、相交或去除重叠区域的操作。 46. **旋转工具**:`R`,按`alt`键定义旋转中心。 47. **...

    CSS3 SVG霓虹灯文字特效.zip

    【CSS3 SVG霓虹灯文字特效】是一种在网页设计中广泛应用的视觉效果,它通过结合CSS3和SVG(Scalable Vector Graphics)技术,创造出类似传统霓虹灯管的动态发光文字,为网页增添现代感和艺术气息。这种特效不仅在...

    photoshop详细教程笔记

    8. **文字工具**:添加文本到图像,调整字体、大小、颜色和对齐方式,创建文字特效。 9. **路径与形状**:路径工具允许用户创建精准的几何形状或自由路径,常用于剪裁、描边或填充。 10. **历史面板**:记录并管理...

    Css文字阴影效果代码.rar

    这段代码会为文字添加四个白色的内描边和一个黑色的主阴影,使得文字具有更强的立体感。 jQuery是一个广泛使用的JavaScript库,它可以简化DOM操作、事件处理、动画和Ajax交互。虽然“Css文字阴影效果代码.rar”主要...

    FLash自学笔记

    2. **填充锁定**:在绘图时,填充锁定可以帮助你避免意外改变图形的填充色或描边色。解除填充锁定的快捷键是`Ctrl+B`。 3. **创建元件**:创建新元件是Flash中常用的功能,快捷键`CTRL + F8`可直接新建元件。如果你...

    PS自学完整笔记(注释)【精华】.doc

    选区的创建可以使用矩形、椭圆形、单行、单列等规则类工具,也可以使用套索工具组,包括套索工具、多边形套索工具、磁性套索工具和文字选区工具。 六、选区的运算 选区的运算包括加选区、减选区、交选区等,可以...

    互普 IP-guard 4.64.10xx.0新功能培训视频

    4. 文字水印增加描边颜色设置; 5. 敏感内容外传控制增加申请审批和自我备案功能; 6. 网址库支持一个网站属于多个分类; 7. 审批流程增加自动审批; 8. 管理员自动审批增加时间类型设置; 9. 控制台增加显示和查询...

    教你在Word文档里制作一个方向指南针.docx

    例如,可以改变“东南西北”的字体颜色,为文字添加填充色或描边,甚至可以插入图形元素如箭头来表示指向。 8. **保存和分享**: - 最后,别忘了保存你的工作。点击“文件”菜单,选择“保存”,为你的指南针文档...

    HTML5 Canvas烟雾文字动画特效.zip

    `fillText()`用于填充文本,`strokeText()`则用于描边文本。为了实现烟雾环绕文字的效果,可能需要先绘制烟雾粒子,然后在其之上绘制文字,或者反过来,根据设计需求选择合适的方式。 在CSS特效方面,虽然主要的...

    ps基础操作精炼笔记

    文字排版工具则用于设置文字的字体、颜色、大小、间距和描边等属性,并提供了多种排版方式。 PS中调整边缘的功能对于处理头发等难以抠出的部分尤其有用。在抠图时,可以使用钢笔工具大致圈出轮廓,然后在选择栏中...

    Photoshop 笔记

    Photoshop不仅支持添加文本,还能对文本进行各种样式和效果的设置,如字体、大小、颜色、描边、阴影等,使文本融入到图像设计中。 八、3D功能 CS5引入了3D功能,用户可以创建和编辑3D对象,将其与2D图像结合,增加...

    HTML5 SVG文字模糊变形特效.zip

    7. **CSS样式**:CSS可以用来进一步控制SVG元素的样式,如填充色、描边宽度、透明度等。结合CSS动画,可以使特效更加平滑和引人入胜。 在"jiaoben8831"这个文件中,可能包含了HTML、SVG、CSS和JavaScript代码示例,...

Global site tag (gtag.js) - Google Analytics