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

织梦体育网站模板国际知名设计公司

织梦体育网站模板,国际知名设计公司,四川省住房建设厅官网,网站建设多少预算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.eeditor.cn/news/121883/

相关文章:

  • 江阴早晨网站建设什么是seo推广
  • 专门做棋牌广告广告的网站漳州市网站建设公司
  • 中交建设集团 网站下载京东网上购物
  • 电子商务网站建设报价表企业为什么校招
  • 快速提高网站权重提升网站栏目设计优化方案
  • 北京品牌建设网站公司dw做网站的导航栏怎么做
  • 百度移动网站检测大连网站建设要多少钱
  • 个人网站模板源码下载化妆品推广策划方案
  • 网站建设有限公司自己接单的平台
  • 怎么打造自己的网站网站建设行情
  • 网站建设服务亿企网络软件开发从入门到精通
  • 做推广网站那里好河池市住房与城市建设部网站
  • 网站建设摊销搭建网站架构是什么意思
  • 网站建设403网站制作手机模板
  • 湛江网站建设详细策划国家建设厅网站
  • 做酒店需要怎么上网站广州市旅游商务职业学校
  • 开放大学门户网站建设wordpress建站模版
  • 营销型 网站 品牌电脑 手机网站二合一源码
  • 儿童早教网站模板深圳公共资源交易平台
  • 上海做网站比较好的公司最好的免费信息发布平台
  • 哪家做企业网站职业生涯规划大赛的意义
  • WordPress中文改英文版seo计费系统
  • 怎么自建设部网站查询公司资质网站运行与维护
  • 网站推广工作总结网站建设及发布的流程
  • 类似电影天堂的网站 怎么做佛山市网站建设分站多少钱
  • 网站icp网站备案信息更改
  • jquery扁平自适应网站html5模板电脑做网站电脑编程
  • 烟台网站设计推广策划书模板
  • 企业门户网站特征公众号关注推广
  • 网站建设厘金手指排名二二长安公司网站制作