`
jianweicao
  • 浏览: 119690 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

canvas.drawTextOnPath()无效

 
阅读更多

转载自:http://bbs.9ria.com/thread-230883-1-1.html

 

为了实现在透明圆环上绘制字体,查到是用canvas.drawTextOnPath()这个函数。但遗憾的是,我在手机上死活都画不出来字体。用canvas.drawPath()正常,说明path是正确的,但就是drawTextOnPath()无效。在网上搜了一堆关于canvas画图的东西,链接如下:

  android截取图片一个圆,得到的图片总是存在锯齿,怎么办?

  android Path、Typeface和绘制弧线

  setTypeface方法:设置字体样式

  canvas.drawText看不到 字体

  Canvas、Path 和 Paint 实例 (游戏开发必备)

  Android 中 drawTextOnPath 文字效果演示(中级)

  图形与图形处理(Path、drawTextOnPath) 怎么实现字符串 90度旋转,使用canvas.drawText()

  android中使用canvas.drawText函数可否设置旋转

  上面这些东西足以把canvas绘制的方方面面讲的很清除了,但我的canvas.drawTextOnPath()就是不中。后来用google查的国外盆有的一篇文章:

  drawTextOnPath() not working from 4.1.2 to 4.0.3

  里面给出的解释是:

  Answer

  drawTextOnPath() was not supported with hardware acceleration until Android 4.1. To work around this problem, simply set a software layer type on your View when running on Android < 4.1. Just call View.setLayerType(View.LAYER_TYPE_SOFTWARE, null). This will force software rendering and fix your problem.

  原来这是android SDK的一个bug,在android4.0.3及其以下(其实是4.1版本 以下),drawTextOnPath是无效的,解决方法是在自定义ImageView的构造函数里增加这一句话: this.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

  一切就OK了!

  另外还可以在Manifinest里面禁止硬件加速参见http://bbs.csdn.net/topics/380198530。但我不推荐这种方式,这会使所有的view包括程序中的surfaceView都禁止加速了,损失太大。

分享到:
评论

相关推荐

    Android canvas.save()和canvas.restore()的理解

    总的来说,`canvas.save()`和`canvas.restore()`是Android图形编程中不可或缺的部分,它们使得复杂图形的绘制变得有序且可控。掌握这两者的使用,对于创建动态、富有层次感的用户界面至关重要。在实际项目中,开发者...

    html2canvas.min.js

    html2canvas.min.js的源码,方便大家下载

    canvas.text.js

    canvas.text.js

    html2canvas.js 下载

    《html2canvas.js:网页截屏的利器》 在当今的Web开发中,用户界面的交互性和可分享性越来越重要,而html2canvas.js正是实现这些功能的关键工具。这个JavaScript库允许开发者将网页的HTML结构及其CSS样式转换为...

    html2canvas.js 和jsPdf.debug.js下载.rar

    jsPdf.debug.js和html2canvas.js下载jsPdf.debug.js和html2canvas.js下载jsPdf.debug.js和html2canvas.js下载jsPdf.debug.js和html2canvas.js下载

    html2canvas.js and html2canvas.svg.js and bluebird.min.js

    var imgData = canvas.toDataURL('image/png'); // 可以在这里做其他处理,例如保存图片 }); ``` 在这个例子中,`document.body`是被截图的元素,生成的Canvas会被添加到页面中,`toDataURL`方法则用于将Canvas...

    html2canvas.js

    var imgData = canvas.toDataURL('image/png'); // 将图片数据URL插入到页面中预览 document.body.appendChild(document.createElement('img')).src = imgData; // 或者可以下载图片 var link = document....

    html2canvas.js文件包下载

    《html2canvas.js:将HTML转化为Canvas图像的神器》 在网页开发中,有时我们需要将网页内容以图像的形式保存或分享,html2canvas.js就是这样一个强大的JavaScript库,它能够实现将HTML元素及其样式转化为Canvas画布...

    flashcanvas.min.js

    flashcanvas.min.js flashcanvas.min.js flashcanvas.min.js flashcanvas.min.js

    html2canvas.min.zip

    &lt;script src="path/to/html2canvas.min.js"&gt; ``` 2. 调用API:然后,你可以选择一个DOM元素,调用html2canvas方法,将该元素转换为Canvas。 ```javascript html2canvas(document.querySelector('#target')).then...

    html2canvas.min.js + FileSaver.min.js + jszip.min.js

    1. **html2canvas.min.js**: `html2canvas`是一个非常实用的JavaScript库,它能够将HTML元素转换为canvas元素,进一步可以将其转化为图片(如JPEG、PNG或SVG)。这个过程通常称为“屏幕抓取”或“页面截图”。`...

    canvas.ts:Node.js Canvas LMS客户端

    《canvas.ts: Node.js Canvas LMS客户端初探》 Canvas.ts是一个基于Node.js的客户端库,主要用于与Canvas Learning Management System (LMS) 进行交互。Canvas LMS是一款广泛使用的在线学习平台,它允许教师创建...

    js移动端页面生成图片demo(基于html2Canvas.js).zip

    const imgData = canvas.toDataURL('image/png'); // 可以将imgData设置为标签的src,或者提供下载 }); ``` 7. **拓展应用**:除了基本的页面截图,html2Canvas还可以用于生成可分享的海报、屏幕快照、预览和...

    Delphi Canvas.Brush为窗体绘制渐变背景.rar

    Delphi 为窗体绘制渐变背景,这里使用了Delphi中的Canvas.Brush.Color来实现窗口背景的渐变色,不错吧?如示例图的左右渐变效果,实现的代码:  for i:=0 to self.Width-1 do  begin  c1:=GetRValue(StartColor) ...

    apng-canvas.js

    APNG经过修改后,在QT,浏览器上可用的apng-canvas.js 参考博客使用:http://blog.csdn.net/ly305750665/article/details/77972415

Global site tag (gtag.js) - Google Analytics