zoukankan      html  css  js  c++  java
  • 4.1.6 绘制文本

        当然,我们不仅局限于绘制直线、形状以及点。通过使用drawText方法,同样可以在Canvas对象上绘制文本;只需要绘制的文本作为一个字符串传入,同时传入起始的x和y坐标以及一个Paint对象。Paint类有一个称为setTextSize的方法,用来设置可以使用的文本大小。

    1         Paint paint=new Paint();
    2         paint.setColor(Color.GREEN);
    3         paint.setTextSize(40);
    4         float text_x=120;
    5         float text_y=120;
    6         canvas.drawText("Hello", text_x, text_y, paint);

        1.内置字体

         在绘制文本时,如果不能指定字体或样式,那么将会非常受限。幸运的是,Paint类允许通过调用setTypeface方法传入一个Typeface对象来指定应该使用哪种字体。

         Typeface类中定义了许多的常量,以表示Android操作系统中附带的内置字体。这些字体是由称为Ascender的公司(www.ascendercorp.com/)所创建的,作为他们的Droid字体套件的一部分。

         这些字体在Typeface类中定义如下:

         Typeface.MONOSPACE:这种字体中的每个字母之间都有相等的间隔。

         Typeface.SNAS_SERIF:这是没有衬线(serif)的字体。

         Typeface.SERIF:这是包含衬线(serif)的字体。

         注意:衬线(serif)是行的末端组成字母的短线

         除了这3种主要的字体,还有其他两个字体常量。

         Typeface.DEFAULT:这种字体与无衬线字体相同,如果没有调用setTypeface,那么它将使默认的字体。

         Typeface.DEFAULT_BOLD:这是无衬线字体的粗体版本。

    1         Paint paint=new Paint();
    2         paint.setColor(Color.GREEN);
    3         paint.setTextSize(40);
    4         paint.setTypeface(Typeface.DEFAULT_BOLD);
    5         float text_x=120;
    6         float text_y=120;
    7         canvas.drawText("Hello", text_x, text_y, paint);

        2.字体样式

        与内置字体一起,Typeface类中还定义了一系列的样式常量。通过使用在Typeface类中存在的create方法,可以将这些样式用于修改某个内置字体。这个方法返回一个新的、可用的Typeface对象。

        以下是在Typeface类中定义的样式列表:

        Typeface.BOLD:粗体

        Typeface.ITALIC:斜体

        Typeface.NORMAL:普通

        Typeface.BOLD_ITALIC:粗体加斜体

        使用它们非常的简单。首先调用Typeface.create,传入想要应用的基本字体和样式。然后,我们将获得传递给paint.setTypeface方法的Typeface对象,这就是所需要执行的过程。下面是一个简单的示例。

    1         Paint paint=new Paint();
    2         paint.setColor(Color.GREEN);
    3         paint.setTextSize(40);
    4         Typeface serif_italic=Typeface.create(Typeface.SERIF, Typeface.ITALIC);
    5         paint.setTypeface(serif_italic);
    6         float text_x=120;
    7         float text_y=120;
    8         canvas.drawText("Hello", text_x, text_y, paint);

        3.外部字体

        Android应用程序不限定只能使用内置字体。Android支持从任何TrueType字体文件创建Typeface对象。TrueType字体是一种标准字体,并且可在各种平台上使用。这为我们的应用程序带来了广泛的可能性。

        互联网上有许多的站点提供免费的字体,当然,也有创建字体的设计单位和公司会销售使用其字体的许可。

        一个与Android内置字体完全不同的字体是由Claude Pelletier创建的Chopin Script字体。它面向公共领域,可以通过各种来源免费下载,如fontspace.com(www.fontspace.com/diogene/chopinscript)等。为了使用该字体,可以下载它,并将.ttf文件(chopinscript.ttf)放入到项目的“assets”文件夹中。

       Typeface.createFromAsset方法接受一个AssetManager对象以及文件的名称作为参数,其中AssetManager对象可以通过从Context调用getAsset获得。该方法返回一个Typeface对象,可以将它传递给paint.setTypeface方法。

    1    Typeface chops=Typeface.createFromAsset(getAssets(), "ChopinScript.ttf");
    2    paint.setTypeface(chops);

        4.路径上的文本

         不仅限于在一条水平线上绘制文本;同样可以在一条路径上绘制它。

    1         Paint paint=new Paint();
    2         paint.setColor(Color.GREEN);
    3         paint.setTextSize(40);
    4         paint.setTypeface(Typeface.DEFAULT);
    5         Path p=new Path();
    6         p.moveTo(20, 20);
    7         p.lineTo(100, 150);
    8         p.lineTo(200, 220);
    9         canvas.drawTextOnPath("Hello", p, 0, 0, paint);
  • 相关阅读:
    闭包
    laravel 控制器
    laravel 模板
    laravel 视图
    laravel 请求
    laravel 分页
    解决启动Apache遇到的问题Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:8888
    一张号称一篇程序覆盖Python基础的代码
    [转载]激活Navicat Premium
    C语言自定义函数的形参为数组时需要注意传入长度
  • 原文地址:https://www.cnblogs.com/ZSS-Android/p/3937147.html
Copyright © 2011-2022 走看看