java–PorterDuffXfermode DST_IN无法按预期工作

java–PorterDuffXfermode DST_IN无法按预期工作,第1张

概述所以我试图加快一些我们正在做的绘图(用alpha透明度绘制弧的一部分)并尝试将整个弧缓存到单独的位图中,并选择性地使用alpha蒙版显示它.根据我已经完成的研究(适用于Android,thisexample和thistool的XfermodesAPI演示),如果我有以下两个图形:并使用以下内容绘制:XfermodeDST_

所以我试图加快一些我们正在做的绘图(用Alpha透明度绘制弧的一部分)并尝试将整个弧缓存到单独的位图中,并选择性地使用Alpha蒙版显示它.

根据我已经完成的研究(适用于Android,this example和this tool的Xfermodes API演示),如果我有以下两个图形:

并使用以下内容绘制:

Xfermode DST_IN = new PorterDuffXfermode(PorterDuff.Mode.DST_IN);Paint paint = new Paint(Paint.ANTI_AliAS_FLAG);canvas.drawBitmap(circle, 0, 0, paint);paint.setXfermode(DST_IN);canvas.drawBitmap(arc, 0, 0, paint);paint.setXfermode(null);

我应该得到这个结果:

将目标图像(圆圈)剪切到绘制源图像(圆弧)的区域.相反,我得到了完整的圆圈.如果我只是绘制弧线,它会出现在正确的位置,如果我使用DST_OUT,我得到预期结果的倒数(圆圈的其他三个象限).

我也确保为这个视图禁用硬件渲染,以防这个Xfermode出现问题,但它没有什么区别.

我把它分解成一个单独的项目,在最简单的级别试图让它工作,并使用下面的代码,我仍然有同样的问题:

public class ClippedVIEw extends VIEw {    private Xfermode DST_IN, DST_OUT;    private Paint paint;    public ClippedVIEw(Context context) {        super(context);        init();    }    private voID init() {        setLayoutParams(new relativeLayout.LayoutParams(VIEwGroup.LayoutParams.MATCH_PARENT, VIEwGroup.LayoutParams.MATCH_PARENT));        this.setLayerType(VIEw.LAYER_TYPE_SOFTWARE, null);        paint = new Paint(Paint.ANTI_AliAS_FLAG);        DST_IN = new PorterDuffXfermode(PorterDuff.Mode.DST_IN);        DST_OUT = new PorterDuffXfermode(PorterDuff.Mode.DST_OUT);    }    @OverrIDe    protected voID onDraw(Canvas canvas) {        super.onDraw(canvas);        paint.setcolor(color.GREEN);        canvas.drawRect(0, 0, getWIDth() / 2, getHeight() / 2, paint);        paint.setcolor(color.BLACK);        paint.setXfermode(DST_IN);        canvas.drawCircle(getWIDth() / 2, getHeight() / 2, getWIDth() / 2, paint);        paint.setXfermode(null);    }}

我用错了吗?我只是错过了一些东西吗?我发现了一个错误吗? 总结

以上是内存溢出为你收集整理的java – PorterDuffXfermode DST_IN无法按预期工作全部内容,希望文章能够帮你解决java – PorterDuffXfermode DST_IN无法按预期工作所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存