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

相关推荐
常利兵3 分钟前
Kotlin作用域函数全解:run/with/apply/let/also与this/it的魔法对决
android·开发语言·kotlin
幼稚园的山代王16 分钟前
Kotlin-基础语法练习一
android·开发语言·kotlin
闻不多21 分钟前
用llamaindex搭建GAR遇到400
android·运维·服务器
阿华的代码王国31 分钟前
【Android】适配器与外部事件的交互
android·xml·java·前端·后端·交互
跨界混迹车辆网的Android工程师1 小时前
实现Android图片手势缩放功能的完整自定义View方案,结合了多种手势交互功能
android·交互
wyjcxyyy1 小时前
打靶日记-PHPSerialize
android
安卓开发者12 小时前
Android RxJava 组合操作符实战:优雅处理多数据源
android·rxjava
阿华的代码王国13 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
一条上岸小咸鱼13 小时前
Kotlin 基本数据类型(三):Booleans、Characters
android·前端·kotlin
Jerry说前后端13 小时前
RecyclerView 性能优化:从原理到实践的深度优化方案
android·前端·性能优化