Android Alpha Masking问题

发布于 2024-11-10 06:03:50 字数 947 浏览 2 评论 0原文

在我重写的 onDraw() 函数中,我有一个画布,里面有两个仪表(仪表是 PNG 的)。仪表堆叠在一起。我希望只显示顶部仪表的一半,同时显示另一半的底部仪表。到目前为止,这就是我所拥有的:

@Override
public void onDraw(Canvas c){

    int targetWidth=200;
    int targetHeight=200;

    Paint p = new Paint();

    Bitmap bottom = BitmapFactory.decodeResource(getResources(), R.drawable.dashboard_rpm_bottom);
    Bitmap top = BitmapFactory.decodeResource(getResources(), R.drawable.dashboard_rpm_top);

    p.setFilterBitmap(false);

    c.translate(55,320);

    c.drawBitmap(
            bottom,
            new Rect(0, 0, bottom.getWidth(), bottom.getHeight()),
            new Rect(0, 0, targetWidth, targetHeight),
            p);


    p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OUT));

    c.drawBitmap(
            top,
            new Rect(0, 0, top.getWidth(), top.getHeight()),
            new Rect(0, 0, targetWidth, targetHeight),
            p);



    }

似乎不起作用,有人有什么想法吗?

in my overridden onDraw() function i have a canvas with two gauges in it (gauges are PNG's). The gauges are stacked on top of eachother. I would like only half of the gauge on the top to show while revealing the bottom gauge on the other half. Here's what i have so far:

@Override
public void onDraw(Canvas c){

    int targetWidth=200;
    int targetHeight=200;

    Paint p = new Paint();

    Bitmap bottom = BitmapFactory.decodeResource(getResources(), R.drawable.dashboard_rpm_bottom);
    Bitmap top = BitmapFactory.decodeResource(getResources(), R.drawable.dashboard_rpm_top);

    p.setFilterBitmap(false);

    c.translate(55,320);

    c.drawBitmap(
            bottom,
            new Rect(0, 0, bottom.getWidth(), bottom.getHeight()),
            new Rect(0, 0, targetWidth, targetHeight),
            p);


    p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OUT));

    c.drawBitmap(
            top,
            new Rect(0, 0, top.getWidth(), top.getHeight()),
            new Rect(0, 0, targetWidth, targetHeight),
            p);



    }

doesn't seem to work, anyone have any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅忆 2024-11-17 06:03:50

我能够使用 xfermode DST_OUT 方法来做到这一点

I was able to do this using the xfermode DST_OUT method

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文