Android画布Canvas裁剪区域clipRect,Kotlin

Android画布Canvas裁剪区域clipRect,Kotlin

只需要把clipRect放在Android系统的super.onDraw之前,就只绘制"剪切"出来的区域。意图很简单,只绘制中心区域宽高为800,600的那一小块:

Kotlin 复制代码
class MyImageView : AppCompatImageView {
    private var mSrcBmp: Bitmap? = null
    private val mSizeF = SizeF(800f, 600f)

    constructor(ctx: Context, attrs: AttributeSet) : super(ctx, attrs) {
        //mSrcBmp是原始图大小,没有缩放和拉伸的。
        mSrcBmp = (drawable as BitmapDrawable).bitmap
    }

    override fun onDraw(canvas: Canvas) {
        val cx = this.width / 2
        val cy = this.height / 2
        val srcRectF = RectF(cx - mSizeF.width / 2, cy - mSizeF.height / 2, cx + mSizeF.width / 2, cy + mSizeF.height / 2)
        canvas.clipRect(srcRectF)

        super.onDraw(canvas)
    }
}

如果不做特殊位置调整,把绘制裁剪绘制代码常规的放在super.onDraw之后:

Kotlin 复制代码
    override fun onDraw(canvas: Canvas) {
        super.onDraw(canvas)
        
        val cx = this.width / 2
        val cy = this.height / 2
        val srcRectF = RectF(cx - mSizeF.width / 2, cy - mSizeF.height / 2, cx + mSizeF.width / 2, cy + mSizeF.height / 2)
        canvas.clipRect(srcRectF)
    }

则,

没有"裁剪"效果。

Android Canvas图层saveLayer剪切clipPath原图addCircle绘制对应圆形区域并放大,Kotlin(3)-CSDN博客文章浏览阅读1.1k次,点赞17次,收藏19次。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。基础上,把剪切的区域从矩形Rect变为圆形的Path,当手指在上面的ImageView移动时候,下面同等大小对应的坐标区域显示"剪切"出来的圆形图。https://blog.csdn.net/zhangphil/article/details/135297559

Android Canvas图层saveLayer剪切clipPath原图addCircle绘制对应圆形区域,Kotlin(2)-CSDN博客文章浏览阅读1.1k次,点赞20次,收藏18次。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。基础上,把剪切的区域从矩形Rect变为圆形的Path,当手指在上面的ImageView移动时候,下面同等大小对应的坐标区域显示"剪切"出来的圆形图。https://blog.csdn.net/zhangphil/article/details/135297192

Android Canvas图层saveLayer剪切clipRect原图对应Rect区域,Kotlin(1)-CSDN博客文章浏览阅读886次,点赞21次,收藏22次。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。Android Bitmap保存成至手机图片文件,Kotlin_android bitmap保存图片-CSDN博客。Android画布Canvas裁剪clipRect,Kotlin-CSDN博客。https://blog.csdn.net/zhangphil/article/details/135297013

Android画布Canvas裁剪clipRect,Kotlin-CSDN博客文章浏览阅读1.3k次,点赞23次,收藏18次。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。Android Bitmap保存成至手机图片文件,Kotlin_android bitmap保存图片-CSDN博客。Android画布Canvas绘制drawBitmap基于源Rect和目的Rect,Kotlin-CSDN博客。https://blog.csdn.net/zhangphil/article/details/135156671

相关推荐
从零开始学安卓几秒前
Kotlin(二) 单例的加载
前端·kotlin
兰亭序咖啡3 分钟前
学透Spring Boot — 007. 加载外部配置
android·java·spring boot
89315196018 分钟前
Android穿山甲banner广告穿插到项目的banner中
android·android开发·android教程·穿山甲banner广告加入项目
利明的博客1 小时前
mediacodec服务启动时加载media_codecs.xml
android·xml·java
高林雨露2 小时前
Java 与 Kotlin 对比学习指南(二)
java·开发语言·kotlin
高林雨露3 小时前
Kotlin 基础语法解析
android·开发语言·kotlin
louisgeek3 小时前
Android 系统架构
android
鸿蒙布道师3 小时前
鸿蒙NEXT开发随机工具类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
tangweiguo030519873 小时前
(Kotlin)Android 高效底部导航方案:基于预定义 Menu 和 ViewPager2 的 Fragment 动态绑定实现
android·开发语言·kotlin
顾林海3 小时前
Jetpack Pager 使用与原理解析
android·android jetpack