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

相关推荐
Eastsea.Chen1 小时前
MTK Android12 user版本MtkLogger
android·framework
长亭外的少年9 小时前
Kotlin 编译失败问题及解决方案:从守护进程到 Gradle 配置
android·开发语言·kotlin
JIAY_WX9 小时前
kotlin
开发语言·kotlin
建群新人小猿11 小时前
会员等级经验问题
android·开发语言·前端·javascript·php
1024小神12 小时前
tauri2.0版本开发苹果ios和安卓android应用,环境搭建和最后编译为apk
android·ios·tauri
兰琛12 小时前
20241121 android中树结构列表(使用recyclerView实现)
android·gitee
Y多了个想法13 小时前
RK3568 android11 适配敦泰触摸屏 FocalTech-ft5526
android·rk3568·触摸屏·tp·敦泰·focaltech·ft5526
NotesChapter14 小时前
Android吸顶效果,并有着ViewPager左右切换
android
_祝你今天愉快15 小时前
分析android :The binary version of its metadata is 1.8.0, expected version is 1.5.
android
暮志未晚Webgl16 小时前
109. UE5 GAS RPG 实现检查点的存档功能
android·java·ue5