<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 啥都寫點 閱讀(785) 評論(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



                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: 一区二区三区四区免费视频| 乱爱性全过程免费视频| 91香焦国产线观看看免费| 亚洲色大成网站www永久一区| 老司机午夜性生免费福利| 国产精品视频免费一区二区三区| 亚洲人成网站18禁止| 成人免费淫片在线费观看| 亚洲熟妇无码八V在线播放| 四虎影院在线免费播放| 久久久久亚洲国产AV麻豆| 免费在线观看亚洲| 免费人妻精品一区二区三区| 亚洲AV伊人久久青青草原| 一级特黄特色的免费大片视频| 亚洲午夜国产片在线观看| 国产精品免费αv视频| 亚洲成AV人片在线观看无| 1000部国产成人免费视频| 中文无码亚洲精品字幕| 成人免费无码大片a毛片软件| 亚洲av最新在线观看网址| 国产成人精品久久亚洲| 玖玖在线免费视频| 亚洲国产成人久久| 全部免费毛片在线| 成人免费一区二区三区| 亚洲欧洲日本天天堂在线观看| 日美韩电影免费看| 国产精品内射视频免费| 亚洲高清美女一区二区三区| 免费无码黄动漫在线观看| sihu国产精品永久免费| 亚洲精品电影天堂网| 日韩中文无码有码免费视频 | 在线观看日本亚洲一区| 国产一级淫片视频免费看| a级成人免费毛片完整版| 亚洲va久久久久| 亚洲宅男天堂在线观看无病毒| 9420免费高清在线视频|