android-在位图上绘制文本

android-在位图上绘制文本,第1张

概述我正在尝试将文字放在地图标记上,但它始终显示在其下方.首先,我将drawable转换为bitmap,然后在其上绘制文本.可绘制到位图的转换效果很好,我只有文字覆盖问题.我已经尝试过这些:>AddingtexttoabitmapinmemoryinAndroid>https://stackoverflow.com/a/7328777/3423468>

我正在尝试将文字放在地图标记上,但它始终显示在其下方.
首先,我将drawable转换为bitmap,然后在其上绘制文本.可绘制到位图的转换效果很好,我只有文字覆盖问题.

我已经尝试过这些:

> Adding text to a bitmap in memory in Android
> https://stackoverflow.com/a/7328777/3423468
> https://stackoverflow.com/a/8831182/3423468

还有更多没有运气的.

这是我目前的方法:

Bitmap drawabletoBitmap(Drawable drawable)    {        var bitmap = Bitmap.createBitmap(drawable.getIntrinsicWIDth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);        var canvas = new Canvas(bitmap);        if (shouldDrawText)        {            Paint paint = new Paint();            paint.setcolor(color.WHITE);            paint.setstrokeWIDth(40);            paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER)); // Text OverlapPing Pattern            //canvas.drawBitmap(bitmap, 0, 0, paint);            canvas.drawText("Testing...", 10, 10, paint);        }        drawable.SetBounds(0, 0, canvas.WIDth, canvas.Height);        drawable.Draw(canvas);        return bitmap;    }

有什么想法我做错了吗?

解决方法:

paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER)); // Text OverlapPing Pattern

在这里,您使用SRC_OVER,这意味着源将在DST下方. DST是要绘制的新像素.

您应该使用DST_OVER在旧像素之上绘制新像素.

paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OVER)); // Text OverlapPing Pattern

在此查看Porterduff工作原理的概述
 

总结

以上是内存溢出为你收集整理的android-在位图上绘制文本全部内容,希望文章能够帮你解决android-在位图上绘制文本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1120923.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存