2

看起来 mPaint.setShadowLayer() 干扰了 mPaint.EmbossMaskFilter() 指令。我不能同时设置我的油漆,因为否则画布上没有任何东西。

 mPaintRing = new Paint();
 mPaintRing.setFlags(Paint.ANTI_ALIAS_FLAG);
 mPaintRing.setColor(colorGold);
 mPaintRing.setDither(true);
 mPaintRing.setShadowLayer(3,0,15,colorBackShadow);
 mPaintRing.setStyle(Paint.Style.STROKE);
 mPaintRing.setMaskFilter(new EmbossMaskFilter(new float[]{0, 1, 1},0.7f, 6.0f, 7.5f));

这是预期的行为,错误还是我错过了什么?我正在使用带有 minSDK 11 的 appcompat 7.23.14 为 M 构建。

4

2 回答 2

0

试试这个代码来同时应用EmbossMaskFiltersetShadowLayer属性Paint。这完美地工作。

mPaintRing.setShadowLayer(3,0,15,Color.Black);
mPaintRing.setMaskFilter(null);
canvas.drawText(mPaintRing.getText, 0, 0, mPaintRing);

mPaintRing.clearShadowLayer();
mPaintRing.setMaskFilter(new EmbossMaskFilter(new float[]{0, 1, 1},0.7f, 6.0f, 7.5f));
canvas.drawTextOnPath(mPaintRing.getText, 0, 0, mPaintRing);

如果他们仍然有问题,请在这里询问或向我展示您的整个代码,我将成为他们的帮助。

于 2016-12-09T10:19:18.647 回答
0

解决方法是使用另一个具有相同外轮廓形状和位置的可绘制对象,其具有阴影层但没有浮雕,并在绘制浮雕之前绘制它。为避免可能的抗锯齿伪影,绘制应具有透明颜色属性。

于 2016-07-14T22:39:21.003 回答