<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Cyh的博客

    Email:kissyan4916@163.com
    posts - 26, comments - 19, trackbacks - 0, articles - 220

    Android游戲開發之旅(五)Path和Typeface

    Posted on 2010-12-03 10:19 啥都寫點 閱讀(793) 評論(0)  編輯  收藏 所屬分類: Android

    今天我們繼續處理上次 Android游戲 開發 之旅 (四)Canvas和Paint實例 中提到的Path路徑和Typeface字體兩個類。對于Android游戲開發或者說2D繪圖中來講Path 路徑可以用強大這個詞來形容。在Photoshop中我們可能還記得使用鋼筆工具繪制路徑的方法。Path路徑類在位于 android .graphics.Path中,Path的構造方法比較簡單,如下

    view plaincopy to clipboardprint?
    Path cwj=new Path();  //構造方法 
    Path cwj=new Path();  //構造方法

    下面我們畫一個封閉的原型路徑,我們使用Path類的addCircle方法

    view plaincopy to clipboardprint?
    cwj.addCircle(10,10,50,Direction.CW); //參數一為x軸水平位置,參數二為y軸垂直位置,第三個參數為圓形的半徑,最后是繪制的方向,CW為順時針方向,而CCW是逆時針方向 
    cwj.addCircle(10,10,50,Direction.CW); //參數一為x軸水平位置,參數二為y軸垂直位置,第三個參數為圓形的半徑,最后是繪制的方向,CW為順時針方向,而CCW是逆時針方向

    結合Android上次提到的Canvas類中的繪制方法drawPath和drawTextOnPath,我們繼續可以在onDraw中加入。

    view plaincopy to clipboardprint?
    canvas.drawPath(cwj,paintPath); //Android123提示大家這里paintPath為路徑的畫刷顏色,可以見下文完整的源代碼。  
    canvas.drawTextOnPath("Android123 - CWJ",cwj,0,15,paintText); //將文字繪制到路徑中去, 
    canvas.drawPath(cwj,paintPath); //Android123提示大家這里paintPath為路徑的畫刷顏色,可以見下文完整的源代碼。
    canvas.drawTextOnPath("Android123 - CWJ",cwj,0,15,paintText); //將文字繪制到路徑中去,

    有關drawTextOnPath的參數如下:

    方法原型

    view plaincopy to clipboardprint?
    public void drawTextOnPath (String text, Path path, float hOffset, float vOffset, Paint paint) 
    public void drawTextOnPath (String text, Path path, float hOffset, float vOffset, Paint paint)

    參數列表

    text  為需要在路徑上繪制的文字內容。
    path 將文字繪制到哪個路徑。
    hOffset  距離路徑開始的距離
    vOffset  離路徑的上下高度,這里Android開發網提示大家,該參數類型為float浮點型,除了精度為8位小數外,可以為正或負,當為正時文字在路徑的圈里面,為負時在路徑的圈外面。
    paint  最后仍然是一個Paint對象用于制定Text本文的顏色、字體、大小等屬性。

    下面是我們的onDraw方法中如何繪制路徑的演示代碼為:

    view plaincopy to clipboardprint?
    @Override 
    protected void onDraw(Canvas canvas) {  
      Paint paintPath=new Paint();  
      Paint paintText=new Paint();  
      paintPath.setColor(Color.Red); //路徑的畫刷為紅色  
      paintText.setColor(Color.Blue); //路徑上的文字為藍色  
      Path pathCWJ=new Path();  
      pathCWJ.addCircle(10,10,50,Direction.CW); // 半徑為50px,繪制的方向CW為順時針  
      canvas.drawPath(pathCWJ,paintPath);  
    canvas.drawTextOnPath("Android123 - CWJ",pathCWJ,0,15,paintText); //在路徑上繪制文字  

      @Override
      protected void onDraw(Canvas canvas) {
        Paint paintPath=new Paint();
        Paint paintText=new Paint();
        paintPath.setColor(Color.Red); //路徑的畫刷為紅色
        paintText.setColor(Color.Blue); //路徑上的文字為藍色
        Path pathCWJ=new Path();
        pathCWJ.addCircle(10,10,50,Direction.CW); // 半徑為50px,繪制的方向CW為順時針
        canvas.drawPath(pathCWJ,paintPath);
      canvas.drawTextOnPath("Android123 - CWJ",pathCWJ,0,15,paintText); //在路徑上繪制文字
      }

    有關路徑類常用的方法如下:

    view plaincopy to clipboardprint?
    void  addArc(RectF oval, float startAngle, float sweepAngle)  //為路徑添加一個多邊形  
    void  addCircle(float x, float y, float radius, Path.Direction dir)  //給path添加圓圈  
    void  addOval(RectF oval, Path.Direction dir)  //添加橢圓形  
    void  addRect(RectF rect, Path.Direction dir)  //添加一個區域  
    void  addRoundRect(RectF rect, float[] radii, Path.Direction dir)  //添加一個圓角區域  
    boolean  isEmpty()  //判斷路徑是否為空  
    void  transform(Matrix matrix)  //應用矩陣變換  
    void  transform(Matrix matrix, Path dst)  //應用矩陣變換并將結果放到新的路徑中,即第二個參數。 
    void  addArc(RectF oval, float startAngle, float sweepAngle)  //為路徑添加一個多邊形
    void  addCircle(float x, float y, float radius, Path.Direction dir)  //給path添加圓圈
    void  addOval(RectF oval, Path.Direction dir)  //添加橢圓形
    void  addRect(RectF rect, Path.Direction dir)  //添加一個區域
    void  addRoundRect(RectF rect, float[] radii, Path.Direction dir)  //添加一個圓角區域
    boolean  isEmpty()  //判斷路徑是否為空
    void  transform(Matrix matrix)  //應用矩陣變換
    void  transform(Matrix matrix, Path dst)  //應用矩陣變換并將結果放到新的路徑中,即第二個參數。

    有關路徑的高級效果 大家可以使用PathEffect類,有關路徑的更多實例Android123將在今后的游戲開發實戰中講解道。

    Typeface字體類

    平時我們在TextView 中需要設置 顯示的字體可以通過TextView 中的setTypeface方法來指定一個Typeface對象,因為 Android的字體類比較簡單,我們列出所有成員方法

    view plaincopy to clipboardprint?
    static Typeface  create(Typeface family, int style)  //靜態方法,參數一為字體類型這里是Typeface的靜態定義,如宋體,參數二風格,如粗體,斜體  
    static Typeface  create(String familyName, int style)  //靜態方法,參數一為字體名的字符串,參數二為風格同上,這里我們推薦使用上面的方法。  
    static Typeface  createFromAsset(AssetManager mgr, String path)  //靜態方法,參數一為AssetManager對象,主要用于從APK的assets文件夾中取出字體,參數二為相對于Android工程下的 assets文件夾中的外掛字體文件的路徑。  
    static Typeface  createFromFile(File path)  //靜態方法,從文件系統構造一個字體,這里參數可以是sdcard中的某個字體文件  
    static Typeface  createFromFile(String path)  //靜態方法,從指定路徑中構造字體  
    static Typeface  defaultFromStyle(int style) //靜態方法,返回默認的字體風格  
    int  getStyle()  //獲取當前字體風格  
    final boolean  isBold()  //判斷當前是否為粗體  
    final boolean  isItalic()  //判斷當前風格是否為斜體 
    static Typeface  create(Typeface family, int style)  //靜態方法,參數一為字體類型這里是Typeface的靜態定義,如宋體,參數二風格,如粗體,斜體
    static Typeface  create(String familyName, int style)  //靜態方法,參數一為字體名的字符串,參數二為風格同上,這里我們推薦使用上面的方法。
    static Typeface  createFromAsset(AssetManager mgr, String path)  //靜態方法,參數一為AssetManager對象,主要用于從APK的assets文件夾中取出字體,參數二為相對于Android工程下的 assets文件夾中的外掛字體文件的路徑。
    static Typeface  createFromFile(File path)  //靜態方法,從文件系統構造一個字體,這里參數可以是sdcard中的某個字體文件
    static Typeface  createFromFile(String path)  //靜態方法,從指定路徑中構造字體
    static Typeface  defaultFromStyle(int style) //靜態方法,返回默認的字體風格
    int  getStyle()  //獲取當前字體風格
    final boolean  isBold()  //判斷當前是否為粗體
    final boolean  isItalic()  //判斷當前風格是否為斜體

    本類的常量靜態定義,首先為字體類型名稱

    Typeface DEFAULT
    Typeface DEFAULT_BOLD
    Typeface MONOSPACE
    Typeface SANS_SERIF
    Typeface SERIF

    字體風格名稱

    int BOLD
    int BOLD_ITALIC
    int ITALIC
    int NORMAL

    明天我們將在 Android游戲開發之旅 六 自定義View 一文中具體講解onDraw以及什么時候會觸發繪制方法,來實現我們自定義或子類化控件 。

     

    本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/JavaTiger427/archive/2010/11/25/6034555.aspx



                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: 亚洲国产成人精品青青草原| 久久久久噜噜噜亚洲熟女综合| 亚洲狠狠久久综合一区77777| 久久久久久久国产免费看 | 中文字幕免费在线观看| 亚洲无线码一区二区三区| 日韩在线观看视频免费| 亚洲Aⅴ无码一区二区二三区软件| 亚洲国产精品网站在线播放| 女人被男人躁的女爽免费视频| 亚洲人成网站18禁止久久影院| 国产精品爱啪在线线免费观看| 亚洲黄色一级毛片| 一二三四影视在线看片免费| 亚洲乱亚洲乱妇无码| 免费人成网站在线播放| 青青操视频在线免费观看| 亚洲一区二区电影| 91成年人免费视频| 亚洲偷自拍另类图片二区| 国产精品另类激情久久久免费| 日产久久强奸免费的看| 国产亚洲精品一品区99热| 久久WWW免费人成一看片| 亚洲精品无码久久久久秋霞| 又大又黄又粗又爽的免费视频| 人妻巨大乳hd免费看| 日本红怡院亚洲红怡院最新| 5g影院5g天天爽永久免费影院| 亚洲日本成本人观看| 亚洲国产精品成人| 久久青草免费91线频观看不卡| 亚洲日本乱码一区二区在线二产线 | 亚洲韩国—中文字幕| 在人线av无码免费高潮喷水| 夜夜爽妓女8888视频免费观看| 亚洲处破女AV日韩精品| 麻豆最新国产剧情AV原创免费| 色妞www精品视频免费看| 亚洲今日精彩视频| 国产成人在线免费观看|