gpt4 book ai didi

文本模糊时,Android BlurMaskFilter 在 canvas.drawOval 中无效

转载 作者:IT老高 更新时间:2023-10-28 22:17:05 25 4
gpt4 key购买 nike

我一直在尝试创建一个自定义 View ,该 View 在文本下具有模糊的形状。问题是 BlurMaskFilter 对我在 Canvas 上绘制的任何形状都没有影响。以下是我在构造函数中初始化 Paint 对象的方式:

paint = new Paint(0);
paint.setColor(0xffffffff);
paint.setMaskFilter(new BlurMaskFilter(8, BlurMaskFilter.Blur.NORMAL));

mShadowPaint = new Paint(0);
mShadowPaint.setColor(0xff333333);
mShadowPaint.setMaskFilter(new BlurMaskFilter(10, BlurMaskFilter.Blur.NORMAL));

我在 onDraw() 中调用这样的函数:

canvas.drawOval(mShadowBounds,mShadowPaint);
canvas.drawText("hello", x, y, paint);

但这就是我看到的。

The Oval is not blurred yet the text is blurred.

使用 android 4.0 sdk 并在 4.0.4 Galaxy nexus 设备(英国)上进行测试。我想知道这是否是 4.0.4 中的错误,因为我确实在 4.0 和 4.0.3 的模拟器上对其进行了测试,并且它在它们上的模糊效果非常好,除非我做错了什么?

编辑:这是在其他平台上测试它的扩展 View 代码。

import android.content.Context;
import android.graphics.BlurMaskFilter;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;

public class BlurTestView extends View{

private Paint paint;
private Paint mShadowPaint;
private int size = 100;
private RectF mShadowBounds = new RectF();

public BlurTestView(Context context) {
this(context, null, 0);
}

public BlurTestView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}

public BlurTestView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
paint = new Paint(0);
paint.setColor(0xff333333);
paint.setTextSize(size);
paint.setMaskFilter(new BlurMaskFilter(8, BlurMaskFilter.Blur.NORMAL));

mShadowPaint = new Paint(0);
mShadowPaint.setColor(0xff333333);
mShadowPaint.setMaskFilter(new BlurMaskFilter(10, BlurMaskFilter.Blur.NORMAL));

mShadowBounds.top = size;
mShadowBounds.bottom = mShadowBounds.top+(size /2);
mShadowBounds.left = 0;
mShadowBounds.right = (int)paint.measureText("hello");
}

@Override
public void onDraw(Canvas canvas)
{
canvas.drawOval(mShadowBounds,mShadowPaint);
canvas.drawText("hello", 0, size, paint);
}

}

最佳答案

对我来说似乎是一个错误。我向 Android 团队报告;我们会看看他们怎么说。

如果您在 AndroidManifest.xml 中的 Activity 上设置 android:hardwareAccelerated="false",它会正确呈现。

这是来自 Android 图形团队的官方说法:“硬件加速不支持 BlurMaskFilter。”(截至 2012 年 7 月 10 日)

关于文本模糊时,Android BlurMaskFilter 在 canvas.drawOval 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11281404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com