不需要的变形效果在路径android上绘制文本

栏目: Android · 发布时间: 6年前

内容简介:代码日志版权声明:翻译自:http://stackoverflow.com/questions/16656453/unwanted-warp-effect-drawing-text-on-path-android

我在路径上绘制文本做一些测试.我通过将位图设置为画布来制作了背景图片.然后,我在画布上绘制文字,按矩阵旋转.我必须缩短代码,我只会发布重要的部分,因为它太长了.下面显示的图像是用gimp剪裁的,所以不要因为不同的大小而烦恼.我的矩形,路径和矩阵对象:

RectF drawTextOval;
    Path drawTextPath;
    Matrix mDrawnMatrix;

现在,我正在做的是在圆形路径上绘制文字:

drawTextOval.set(drawTextPosX - drawTextArc, drawTextPosY
                    - drawTextArc, drawTextPosX + drawTextArc, drawTextPosY
                    + drawTextArc);
            drawTextPath.addArc(drawTextOval, 0, 360);

            drawTextPath.computeBounds(drawTextOval, true);
            mDrawnMatrix.postRotate(drawTextArcStart,
                    (drawTextOval.right + drawTextOval.left) / 2,
                    (drawTextOval.bottom + drawTextOval.top) / 2);
            drawTextPath.transform(mDrawnMatrix);

            patternCanvas.drawTextOnPath(drawText, drawTextPath, 0, 0,
                    mFixedTextPaint);

直到这一点,一切看起来都很好:

但在保存整个屏幕后,旋转的文本在保存的.png图像上看起来扭曲.所有其他组件看起来不错.我做了一些其他图形文字,线性或角度,所有这些工作.甚至一些.png位图绘制到画布和背景图像…都正常看.但是,在圆形路径中绘制的文字如下所示:

我没有对位图进行缩放,只需保存画布图像:

FileOutputStream fos = new FileOutputStream(saveFile);
        this.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
        Bitmap bitmap = this.getDrawingCache();


        bitmap.compress(CompressFormat.PNG, 100, fos);
        fos.flush();
        fos.close();

为什么文本看起来扭曲?有没有人看到我的错误?提前致谢….

编辑

我尝试了一些东西,发现设置anyDensity为false或禁用硬件加速在Manifest将显示在运行时的效果在保存之前.这对我来说,当使用getDrawingCache()保存位图时,缩放在此时被禁用.但为什么?

我发现最后一件事,曲率越低,文本缩放越低.如果文字只是有点弯曲,似乎很好.

我会尝试设置

this.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);

在绘制屏幕之前,因为较低的质量可能意味着文本的更简单的转换.这当然是猜测.目前,您只能在写入磁盘之前设置高品质.或者将其从写入磁盘方法中删除,以检查它是否影响文本的绘制方式.

代码日志版权声明:

翻译自:http://stackoverflow.com/questions/16656453/unwanted-warp-effect-drawing-text-on-path-android


以上所述就是小编给大家介绍的《不需要的变形效果在路径android上绘制文本》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

谷歌时代的柏拉图

谷歌时代的柏拉图

[美] 丽贝卡·戈尔茨坦 / 李鹏程 / 中信出版集团·新思文化 / 2017-12-10 / 69.00元

我愿意用我所有的科技去换取和苏格拉底相处的一个下午。 ——史蒂夫•乔布斯 谷歌时代,科技昌明,众声喧哗,哲学提出的许多问题,科学似乎都已经给出了答案。若是如此,为什么我们今天还需要哲学?这个由古希腊城邦时代的哲人苏格拉底和柏拉图开创的学科,真的过时了吗? 已经2400岁 的柏拉图对此有话要说。哲学家兼小说家、美国国家人文奖章获得者戈尔茨坦史海钩沉,从经典著作中复活了柏拉图,让他来......一起来看看 《谷歌时代的柏拉图》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具