当前位置: 首页 > news >正文

深圳网站建设创想营销深圳招聘网最新招聘信息

深圳网站建设创想营销,深圳招聘网最新招聘信息,com域名免费,海洋网络网站建设Android基于Matrix绘制PaintDrawable设置BitmapShader#xff0c;以手指触点为中心显示原图的圆切图#xff0c;Kotlin#xff08;4#xff09; 这篇 Android基于Matrix绘制PaintDrawable设置BitmapShader#xff0c;以手指触点为中心显示原图像圆图#xff0c;Kotlin以手指触点为中心显示原图的圆切图Kotlin4 这篇 Android基于Matrix绘制PaintDrawable设置BitmapShader以手指触点为中心显示原图像圆图Kotlin3-CSDN博客 虽然实现了上图绘制手指在屏幕滑动的轨迹且在下面的切图中用中心圆圈标记出当前手指在图中的位置但没有在下面的切图中也绘制出与上图的手指滑动轨迹下面实现这个功能手指在原图中滑动在切图中用圆圈标记手指的位置同时在切图中复刻手指滑动的轨迹。 import android.content.Context import android.graphics.Bitmap import android.graphics.BitmapShader import android.graphics.Canvas import android.graphics.Color import android.graphics.Matrix import android.graphics.Paint import android.graphics.Path import android.graphics.RectF import android.graphics.Shader.TileMode import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.PaintDrawable import android.os.Bundle import android.util.AttributeSet import android.view.MotionEvent import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.AppCompatImageViewclass MainActivity : AppCompatActivity() {private var iv: MyImageView? nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)iv findViewById(R.id.iv)val r findViewByIdImageView(R.id.result)iv?.setTestImageView(r)} }class MyImageView : AppCompatImageView {private var mCurX 0private var mCurY 0private val mPath1 Path()private val mPath2 Path()private val mPathPaint1 Paint()private val mPathPaint2 Paint()private val mCirclePaint Paint()private var mNewBmp: Bitmap? nullprivate var mSrcBmp: Bitmap? nullprivate var mIsDraw falseprivate val mRadius 300fprivate var mDrawable: PaintDrawable? nullprivate var testIV: ImageView? nullconstructor(ctx: Context, attrs: AttributeSet) : super(ctx, attrs) {mSrcBmp (drawable as BitmapDrawable).bitmapmPathPaint1.style Paint.Style.STROKEmPathPaint1.strokeWidth 15fmPathPaint1.isAntiAlias truemPathPaint1.color Color.REDmPathPaint2.style Paint.Style.STROKEmPathPaint2.strokeWidth 20fmPathPaint2.isAntiAlias truemPathPaint2.color Color.YELLOWmCirclePaint.style Paint.Style.STROKEmCirclePaint.strokeWidth 25fmCirclePaint.isAntiAlias truemCirclePaint.color Color.BLUE}fun setTestImageView(iv: ImageView?) {testIV iv}override fun onTouchEvent(event: MotionEvent): Boolean {mCurX event.x.toInt()mCurY event.y.toInt()when (event.action) {MotionEvent.ACTION_DOWN - {mPath1.moveTo(event.x, event.y)mPath2.moveTo(event.x, event.y)mIsDraw true}MotionEvent.ACTION_MOVE - {mPath1.lineTo(event.x, event.y)mPath2.lineTo(event.x, event.y)}MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL - {mIsDraw false//抬手后清除手指轨迹。myClear()}}invalidate()return true}private fun myClear() {//清除历史轨迹。mPath1.reset()mPath2.reset()}override fun onDraw(canvas: Canvas) {super.onDraw(canvas)if (mIsDraw) {myDraw()canvas.drawPath(mPath1, mPathPaint1)}}private fun myDraw() {val shader BitmapShader(Bitmap.createScaledBitmap(mSrcBmp!!, this.width, this.height, true), TileMode.DECAL, TileMode.DECAL)mDrawable PaintDrawable(Color.DKGRAY)mDrawable!!.setCornerRadius(mRadius / 2) //圆角矩形如果不除2即是圆形框图。mDrawable!!.paint.shader shadermDrawable!!.setBounds(0, 0, (mRadius * 2).toInt(), (mRadius * 2).toInt())mNewBmp Bitmap.createBitmap(this.width, this.height, Bitmap.Config.ARGB_8888)val c Canvas(mNewBmp!!)c.drawColor(Color.LTGRAY) //画满底色。val matrix Matrix()matrix.setTranslate(-mCurX mRadius, -mCurY mRadius)mDrawable!!.paint.shader.setLocalMatrix(matrix)mDrawable!!.draw(c)val rectF RectF()matrix.mapRect(rectF)val cx mCurX rectF.leftval cy mCurY rectF.topc.drawCircle(cx, cy, 30f, mCirclePaint) //蓝色中心圆圈//下面小框图里面的Pathval path Path()mPath2.transform(matrix, path)c.drawPath(path, mPathPaint2) //绘制下面框图里面的PathtestIV?.setImageBitmap(mNewBmp)} }?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:backgroundandroid:color/darker_grayandroid:orientationverticaltools:context.MainActivitycom.pkg.MyImageViewandroid:idid/ivandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:adjustViewBoundstrueandroid:backgrounddrawable/ic_launcher_backgroundandroid:scaleTypefitCenterandroid:srcmipmap/mypic /ImageViewandroid:idid/resultandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_marginTop20dpandroid:backgrounddrawable/ic_launcher_backgroundandroid:srcdrawable/ic_launcher_foreground //LinearLayout 有两个遗留问题 1、手指滑动出有效取景区域后切图还在显示这不是很合理。 2、最好只把黄色的轨迹线约束在圆角矩形的小切图框里面不要在下面的切图小框外显示多余的黄色轨迹线。 Android基于Matrix绘制PaintDrawable设置BitmapShader以手指触点为中心显示原图像圆图Kotlin3-CSDN博客文章浏览阅读532次点赞7次收藏4次。基础上增加一个功能手指在上面的图中移动时绘制红色移动轨迹路线同时下面图中对应的小图中显示手指与屏幕的触点这样可以“实时”指示当前手指在上面大图中移动的准确、精细位置。【代码】Android基于Matrix绘制PaintDrawable设置BitmapShader以手指触点为中心显示原图像圆图Kotlin2【代码】Android基于Matrix绘制PaintDrawable设置BitmapShader以手指触点为中心显示原图像圆图Kotlin2https://blog.csdn.net/zhangphil/article/details/135513118
http://www.hkea.cn/news/14286048/

相关文章:

  • 有什么网站可以帮人做模具吗要对网页中各个元素
  • 网站怎么做交易市场wordpress主题seo模板
  • 网站动画效果怎么做企业网站建设方案案例
  • 成品网站超市源码中企动力z邮局登录电脑版
  • 网站分析 工具wordpress图片位置
  • 论坛网站建设开源工具求职简历免费下载模板
  • 有哪些可以在线做app的网站有哪些seo网站是什么意思
  • 青海网站建设系统wordpress 知呼
  • 北京平谷区最新消息新闻济源网站优化
  • php网站颜色改变做地暖工程的网站
  • 山东网站建设最便宜哪个装修公司比较好
  • 网站开发工程师就业前景html个人主页简单源码
  • 360如何做网站优化一个网络空间如何做两个网站
  • 温州外贸网站建设公司全国城建中心官方网站
  • 网站前台设计软件物流公司介绍模板
  • 呼和浩特网站开发 千投中企动力网站后台 好用吗
  • c2c网站建站的标准网站开发的工作要求
  • 网站设计报价表网站建设协议书 保密条款
  • 烟台网站制作厂家联系方式wordpress 自定义菜单
  • 如何网站公司小程序辽宁建设工程信息网官网新网址
  • 网站和手机网站建设搜索引擎友好的网站
  • 如何做网站网页旁边的留言框租房网58同城网租房
  • 全国加盟网站大全摄影网站的市场可行性
  • 调查网站赚钱深圳外贸公司qc招聘
  • 北京网站建设方案哪家好网页网络游戏
  • 建构网站如何做网站新手引导
  • 网站商城建设套餐厦门杏林建设企业网站
  • ftp备份wordpress信息流优化师需要具备哪些能力
  • 郑州哪家公司做网站新闻稿撰写
  • wordpress站群管理破解版国外网站都不能上怎么做跨境电商