Android 使用Canvas在图片上绘制文字的方法

【Android】Android中 Paint 字体、粗细等属性的一些设置

在Android SDK中使用Typeface类来定义字体,可以通过常用字体类型名称进行设置,如设置默认黑体:

Paint mp = new paint();
mp.setTypeface(Typeface.DEFAULT_BOLD)

常用的字体类型名称还有:

* Typeface.DEFAULT //常规字体类型

* Typeface.DEFAULT_BOLD //黑体字体类型

* Typeface.MONOSPACE //等宽字体类型

* Typeface.SANS_SERIF //sans serif字体类型

* Typeface.SERIF //serif字体类型

除了字体类型设置之外,还可以为字体类型设置字体风格,如设置粗体:

Paint mp = new Paint();
Typeface font = Typeface.create(Typeface.SANS_SERIF, Typeface.BOLD);
p.setTypeface( font );

常用的字体风格名称还有:

* Typeface.BOLD //粗体

* Typeface.BOLD_ITALIC //粗斜体

* Typeface.ITALIC //斜体

* Typeface.NORMAL //常规

但是有时上面那些设置在绘图过程中是不起作用的,所以还有如下设置方式:

Paint mp = new Paint();
mp.setFakeBoldText(true); //true为粗体,false为非粗体
mp.setTextSkewX(-0.5f);  //float类型参数,负数表示右斜,整数左斜
mp.setUnderlineText(true); //true为下划线,false为非下划线
mp.setStrikeThruText(true); //true为删除线,false为非删除线

Paint常用的方法还有:

mp.setTextSize(); //设置字体大小,int型,如12
mp.setStrokeWidth(w); //设置线宽,float型,如2.5f,默认绘文本无需设置(默认值好像为0),但假如设置了,再绘制文本的时候一定要恢复到0

说明:对于中文粗体的设置,好像只能通过setFakeBoldText(true)来实现,尽管效果看起来不是很实在(字体中空效果)。实际发现,最后绘制的效果与手机硬件也有些关系,比如前面的绘图测试程序.

一个小应用,在图片上绘制文字,以下是绘制文字的方法,并且能够实现自动换行,字体自动适配屏幕大小

private void drawNewBitmap(ImageView imageView, String str) {
   Bitmap photo = BitmapFactory.decodeResource(this.getResources(), R.drawable.background);
   int width = photo.getWidth();
   int hight = photo.getHeight();
   //建立一个空的Bitmap
   Bitmap icon = Bitmap.createBitmap(width, hight, Bitmap.Config.ARGB_8888);
   // 初始化画布绘制的图像到icon上
   Canvas canvas = new Canvas(icon);
   // 建立画笔
   Paint photoPaint = new Paint();
   // 获取更清晰的图像采样,防抖动
   photoPaint.setDither(true);
   // 过滤一下,抗剧齿
   photoPaint.setFilterBitmap(true);

   Rect src = new Rect(0, 0, photo.getWidth(), photo.getHeight());// 创建一个指定的新矩形的坐标
   Rect dst = new Rect(0, 0, width, hight);// 创建一个指定的新矩形的坐标
   canvas.drawBitmap(photo, src, dst, photoPaint);// 将photo 缩放或则扩大到dst使用的填充区photoPaint
      //自定义的画笔
   TextPaint textPaint=myTextPaint();
      drawText(canvas,textPaint,str,45,hight/5,width);

   canvas.save(Canvas.ALL_SAVE_FLAG);
   canvas.restore();

   imageView.setImageBitmap(icon);
   saveMyBitmap(this,icon);
 }
//设置画笔的字体和颜色
 public TextPaint myTextPaint(){

   TextPaint textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG);// 设置画笔
   int TEXT_SIZE = Math.round(25 * getRATIO());
   textPaint.setTextSize(TEXT_SIZE);// 字体大小
    textPaint.setTypeface(Typeface.DEFAULT_BOLD);// 采用默认的宽度
    textPaint.setColor(Color.argb(255,94,38,18));// 采用的颜色
    return textPaint;
//写入文字,自动换行的方法
 public void drawText(Canvas canvas, TextPaint Paint,String textString,int x,int y,int width) {
  //int Width=Math.round(width* getRATIO());
  int start_x=Math.round(x * getRATIO());
  int start_y=Math.round(y * getRATIO());
  StaticLayout staticLayout=new StaticLayout(textString, Paint, width-start_x*2,
        Alignment.ALIGN_NORMAL, 1.5f, 0.0f, false); 

  //绘制的位置
  canvas.translate(start_x, start_y);
  staticLayout.draw(canvas);
 }

以上这篇Android 使用Canvas在图片上绘制文字的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

您可能感兴趣的文章:

  • Android编程之绘图canvas基本用法示例
  • Android中Canvas的常用方法总结
  • Android canvas drawBitmap方法详解及实例
  • Android中Paint类和Canvas类的方法汇总
(0)

相关推荐

  • Android canvas drawBitmap方法详解及实例

     Android canvas drawBitmap方法详解及实例 之前自己在自定义view,用到canvas.drawBitmap(Bitmap, SrcRect, DesRect, Paint)的时候,对其中的第2和3个参数的含义含糊不清.看源码函数也没理解,然后看了一些其他的博客加上自己的理解,整理如下.首先,我们看一张图片,今天就要绘制这张图片. 然后将图片用红色的线条分成4个部分,如下: 我们自定义一个View,代码如下: public class PoterDuffLoadingVi

  • Android中Paint类和Canvas类的方法汇总

    Paint类的常用的方法 1.setColor方法,用于设置画笔的颜色, public void setColor(int color)//参数color为颜色值,也可以使用Color类定义的颜色 Color.BLACK:黑色 Color.BLUE:蓝色 Color.CYAN:青绿色 Color.DKGRAY:灰黑色 Color.YELLOW:黄色 Color.GRAY:灰色 Color.GREEN:绿色 Color.LTGRAY:浅绿色 Color.MAGENTA:红紫色 Color.TRAN

  • Android编程之绘图canvas基本用法示例

    本文实例讲述了Android编程之绘图canvas基本用法.分享给大家供大家参考,具体如下: MainActivity的代码如下: package example.com.myapplication; import android.os.Bundle; import android.app.Activity; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedIns

  • Android中Canvas的常用方法总结

    一.对Canvas进行操作 对Canvas的一系列操作,是指对Canvas进行旋转.平移.缩放等操作. 这些操作可以让Canvas对象使用起来更加便捷. 二.Canvas平移 /** * 画布向(100,50)方向平移 * * 参数1: 向X轴方向移动100距离 * 参数2: 向Y轴方向移动50距离 */ canvas.translate(100, 50); 三.Canvas缩放 /** * 在X轴方向放大为原来2倍,Y轴方向方大为原来的4倍 * 参数1: X轴的放大倍数 * 参数2: Y轴的放

  • Android 使用Canvas在图片上绘制文字的方法

    [Android]Android中 Paint 字体.粗细等属性的一些设置 在Android SDK中使用Typeface类来定义字体,可以通过常用字体类型名称进行设置,如设置默认黑体: Paint mp = new paint(); mp.setTypeface(Typeface.DEFAULT_BOLD) 常用的字体类型名称还有: * Typeface.DEFAULT //常规字体类型 * Typeface.DEFAULT_BOLD //黑体字体类型 * Typeface.MONOSPACE

  • 基于C#实现在图片上绘制文字

    目录 实践过程 效果 代码 实践过程 效果 代码 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button2_Click(object sender, EventArgs e) { if (textBox1.Text.Length != 0 && pictureBox1.Image != null) { Bitmap bt = new Bitmap(pi

  • JavaScript html5 canvas实现图片上画超链接

    本文实例为大家分享了html5 canvas在图片上画超链接的具体代码,供大家参考,具体内容如下 1. html <canvas id="canvasFile" style="margin-top:15px;" width="500" height="400"></canvas> <input type="button" id="btnRedo" value

  • Android基于OpenGL在GLSurfaceView上绘制三角形及使用投影和相机视图方法示例

    本文实例讲述了Android基于OpenGL在GLSurfaceView上绘制三角形及使用投影和相机视图方法.分享给大家供大家参考,具体如下: 定义三角形 OpenGL 允许我们使用三维坐标来定义物体.在绘制三角形前,我们需要定义它各个点的坐标.我们一般使用数组来存储各个顶点的坐标. OpenGL ES 默认 [0,0,0] (X,Y,Z) 在GLSurfaceView的中心,[1,1,0]在右上角,[-1,-1,0]在左下角. 绘制三角形 在绘制三角形之前,我们必须告诉OpenGL我们正在使用

  • java实现图片上插入文字并保存

    这两天通过在网上查阅资料,了解了在图片上插入文字并保存的功能,下面记录一下. 工具类:PrintImage. package com.learning.www.utils; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.Shape; import

  • Android实现相册中图片上传或下载

    本文实例为大家分享了Android实现相册中图片上传或下载的具体代码,供大家参考,具体内容如下 目标效果: 打开相册选择一张图片,会显示到上方的ImageView中并存储到Bmob中,存储后进入Bmob后台,复制刚才添加的数据的objectId,粘贴到代码指定出,然后运行,点击下载会在下方的ImageView显示刚才上传的图片,这里的下载是指定objectId,可以进行动态获取objectId进行下载. 1.activity_main.xml页面设置布局. activity_main.xml页面

  • 如何利用Java在图片上添加文字水印效果

    目录 前言 [1]获取原图片对象 (1.1)读取本地图片 (1.2)读取网络图片 [2]创建画笔 [3]添加文字水印 [4]获取处理图片 [5]源代码 总结 前言 今天分享一个:通过Java代码,给图片添加文字. 比如下面这个图片,我们在左下角就添加了一个文字版的水印,那么这是如何实现的呢 ? [1]获取原图片对象 首先,第一步,肯定是要让我们的程序,拿到需要处理的图片. 我们程序获取图片的方式,通常有两种,一种是通过下载到本地,从本地读取:另外一种就是通过网络地址进行获取. (1.1)读取本地

  • ThinkPHP实现图片上传操作的方法详解

    本文实例讲述了ThinkPHP实现图片上传操作的方法.分享给大家供大家参考,具体如下: 直接上个例子,其中包括有单图片文件上传.多图片文件上传.以及删除文件的一些操作.放置删除数据库的时候,仅仅删除掉了数据库之中的文件路径.而不是一并删除服务器之中的文件.放置服务器爆炸.. TP里面common文件夹里面function.php里面自定义方法: <?php //文件上传类(可以设置多个参数) function upload($file=null,$maxSize=0,$exts=0,$saveP

  • yii2高级应用之自定义组件实现全局使用图片上传功能的方法

    本文讲述了yii2高级应用之自定义组件实现全局使用图片上传功能的方法.分享给大家供大家参考,具体如下: 此例为yii2高组应用,这里只提供一个简单的事例 在yii2中,在使用到上传图片时有自带的一个上传图片类,但不太好用. 其中有一种方式,把自己写的一个上传图片类文件,注册成一个组件,在全局中使用.(我记得我在里面有写过一篇小物件的使用) 这里,我只作一个简单的自定义组件介绍 1.在backend(或frontend)定义一个 upload.php(注意路径: backend/component

  • 从零开始学习Node.js系列教程三:图片上传和显示方法示例

    本文实例讲述了Node.js图片上传和显示方法.分享给大家供大家参考,具体如下: index.js var server = require("./server"); var router = require("./router"); var requestHandlers = require("./requestHandlers"); var handle = {} handle["/"] = requestHandlers

随机推荐