Android Paint EmbossMaskFilter与setShadowLayer冲突

时间:2016-07-13 23:33:03

标签: android canvas drawing shadow emboss

看起来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));

这是一种预期的行为,一个错误,还是我错过了什么?我使用appcompat 7.23.14和minSDK 11为M构建。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

尝试使用此代码在EmbossMaskFilter上应用setShadowLayerPaint属性。这项工作非常完美。

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);

如果仍然是他们的问题在这里问或者告诉我你的整个代码我将是他们的帮助。