Xfermode只作用于一角,求指教

本文描述了一个基于Android平台自定义视图实现圆角图片显示的问题。作者试图复现慕课网教程中的圆角图片效果,但实际运行结果仅显示一个圆角。文中提供了出现问题的代码示例,并寻求解决方案。

根据徐宜生在大神在慕课网上视频敲出的代码,效果与大神不一样,明明四个圆角,运行出来却只有一个。很郁闷。。。以下是代码,求路过大神指教!
这里写图片描述

package com.interjoy.demoguagualka.CustomView;


import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;

import com.interjoy.demoguagualka.R;

/**
 * Created by ylwang on 2017/1/23.
 */
public class FailView extends View {
    private Bitmap mBitmap;//从资源文件中获取图片
    private Bitmap mOut;//真正输出显示的图片,android中原始资源图片是不支持修改的
    private Paint mPaint;

    public FailView(Context context) {
        super(context);
//        this(context, null);
        initView();
    }

    public FailView(Context context, AttributeSet attrs) {
        super(context, attrs);
//        this(context, attrs, 0);
        initView();
    }

    public FailView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initView();
    }

    private void initView() {
        setLayerType(LAYER_TYPE_SOFTWARE, null);//关闭硬件加速,Xfermode部分属性不支持硬件加速
        mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.forest);//获取资源图片
        mOut = Bitmap.createBitmap(mBitmap.getWidth(), mBitmap.getHeight(),
                Bitmap.Config.ARGB_8888);//通常都设置最高8888,或者与原图相同mBitmap.getConfig()
        Canvas canvas = new Canvas(mOut);//获取画布对象,以输出图片为画布底版
        mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);//获取画笔对象,抗锯齿效果
        //Android默认先画上去为Dst,然后Xfermode,最后Src
        //Dst
        canvas.drawRoundRect(new RectF(0, 0, mBitmap.getWidth(), mBitmap.getHeight()), 100, 100, mPaint);
        mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
        //Src
        canvas.drawBitmap(mBitmap, 0, 0, mPaint);
        mPaint.setXfermode(null);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawBitmap(mOut, 0, 0, null);
    }
}
内容概要:本文提出了一种针对大规模电动汽车接入电网的双层优化调度策略,并基于IEEE33节点系统进行了建模与仿真分析,配套提供了完整的Matlab代码实现。该策略构建了上层电网运行优化与下层电动汽车充电调度的双层协同模型,综合考虑电网负荷削峰填谷、电压稳定性维持以及电动汽车用户充电需满足等多重目标,采用先进的优化算法实现对电动汽车集群的智能有序调度。研究详细阐述了双层模型的构建逻辑、目标函数设计、约束条件设定及迭代解流程,有效降低了电网峰谷差,提升了配电系统对可再生能源的消纳能力,兼具扎实的理论深度与明确的工程应用前景。; 适合人群:电气工程、电力系统及其自动化、能源系统优化等相关专业的研究生、科研人员以及从事智能电网、电动汽车调度、分布式能源管理等领域工作的工程师和技术人员。; 使用场景及目标:①深入研究高比例电动汽车接入对配电网运行特性的影响机制;②掌握电力系统双层优化建模方法及其在实际系统中的解技巧;③实现电动汽车集群的协同调度与车网互动(V2G)优化控制;④作为撰写学术论文、开展课题研究或复现高水平期刊成果的技术参考与代码基础。; 阅读建议:建议读者结合所提供的Matlab代码逐行理解双层优化模型的数学表达与程序实现细节,重点剖析上下层模型之间的信息交互机制与收敛判据,可通过调整电动汽车渗透率、充电行为参数或引入分布式电源等场景进行拓展性仿真,以深化对智能调度策略适应性的认识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值