桂林市中考信息网官网苏州市优化网站推广哪家好

news/2025/10/5 16:21:04/文章来源:
桂林市中考信息网官网,苏州市优化网站推广哪家好,哈尔滨网站建设 哈尔滨网站推广,揭阳响应式网站价格Android挖取原图手指触点区域RectF(并框线标记)放大到ImageView宽高与矩阵mapRadius#xff0c;Kotlin 这里 Android挖取原图中心区域RectF(并框线标记)放大到ImageView宽高#xff0c;Kotlin-CSDN博客 实现的是把原图中心区域的一片小图挖取出来放大放到下面的ImageView里面…Android挖取原图手指触点区域RectF(并框线标记)放大到ImageView宽高与矩阵mapRadiusKotlin 这里 Android挖取原图中心区域RectF(并框线标记)放大到ImageView宽高Kotlin-CSDN博客 实现的是把原图中心区域的一片小图挖取出来放大放到下面的ImageView里面现在不再固定中心位置而是以手指在上图的触点位置为中心位置挖取一片区域图放大然后放到下面的ImageView里面。 ?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:clickabletrueandroid:scaleTypefitCenterandroid:srcmipmap/image /ImageViewandroid:idid/resultandroid:layout_widthmatch_parentandroid:layout_heightwrap_content //LinearLayout import android.content.Context import android.graphics.Bitmap import android.graphics.BitmapFactory 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.os.Bundle import android.util.AttributeSet import android.util.Log import android.util.SizeF import android.view.MotionEvent import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.AppCompatImageView import androidx.core.content.ContextCompat import androidx.core.graphics.toRectclass MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)val miv findViewByIdMyImageView(R.id.iv)val iv findViewByIdImageView(R.id.result)miv.setResultImage(iv)} }class MyImageView : AppCompatImageView {private var W 0private var H 0private val mSizeF SizeF(400f, 200f)private var mOriginBmp: Bitmap? nullprivate var mPaint Paint()private var result: ImageView? nullprivate var mTouchX 0fprivate var mTouchY 0fprivate var mCanDraw falseprivate var mCircleRadius 30fconstructor(ctx: Context, attrs: AttributeSet) : super(ctx, attrs) {mPaint.style Paint.Style.STROKEmPaint.strokeWidth 5fmPaint.isAntiAlias truemPaint.color Color.REDmOriginBmp getOriginalBitmap(ctx, R.mipmap.image)Log.d(fly, origin bmp w${mOriginBmp!!.width} h${mOriginBmp!!.height})}private fun getOriginalBitmap(ctx: Context, resId: Int): Bitmap {val options BitmapFactory.Options()options.inJustDecodeBounds true //只解析原始图片的宽高不decode原始文件装载到内存的Bitmap。BitmapFactory.decodeResource(resources, resId, options)//这一阶段最关键的是获取原始图的真实宽高。val srcBmpWidth options.outWidthval srcBmpHeight options.outHeightval d ContextCompat.getDrawable(ctx, resId)//根据原始图片的宽高创建一个空的Bitmapval bitmap Bitmap.createBitmap(srcBmpWidth, srcBmpHeight, Bitmap.Config.ARGB_8888)val canvas Canvas(bitmap)d?.setBounds(0, 0, srcBmpWidth, srcBmpHeight)d?.draw(canvas) //至此bitmap即为原始图片。return bitmap}override fun onTouchEvent(event: MotionEvent?): Boolean {if (event null) {return false}mTouchX event.xmTouchY event.ywhen (event.action) {MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL - {mCanDraw truemyInvalidate()}}return super.onTouchEvent(event)}private fun myInvalidate() {this.invalidate()}fun setResultImage(iv: ImageView) {result iv}override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {super.onSizeChanged(w, h, oldw, oldh)W wH hLog.d(fly, W$W H$H)}//从原始的Bitmap图中抠出一块SizeF大小的图。private fun getCenterBmp(): Bitmap {val bmp Bitmap.createBitmap(W, H, Bitmap.Config.ARGB_8888)val c Canvas(bmp)val dstRectF RectF(0f, 0f, bmp.width.toFloat(), bmp.height.toFloat())//需要特别注意要把手指在屏幕上触点坐标经过比例映射到原始图Bitmap的对应位置。val mapToOriginBmpX mOriginBmp!!.width * (mTouchX / W)val mapToOriginBmpY mOriginBmp!!.height * (mTouchY / H)val centerRectF RectF(mapToOriginBmpX - mSizeF.width / 2f,mapToOriginBmpY - mSizeF.height / 2f,mapToOriginBmpX mSizeF.width / 2f,mapToOriginBmpY mSizeF.height / 2f)c.drawBitmap(mOriginBmp!!, centerRectF.toRect(), dstRectF, null)val mx Matrix()mx.setScale(dstRectF.width() / centerRectF.width(), dstRectF.width() / centerRectF.width())//下面图中的中心圆圈。mPaint.color Color.YELLOWc.drawCircle(W / 2f, H / 2f,mx.mapRadius(mCircleRadius), //注意同步放大小图的圆圈半径。mPaint)return bmp}override fun onDraw(canvas: Canvas) {super.onDraw(canvas)if (mCanDraw) {//绘制中心圆圈。mPaint.color Color.YELLOWcanvas.drawCircle(mTouchX, mTouchY, mCircleRadius, mPaint)drawRoundRectLine(canvas)result?.setImageBitmap(getCenterBmp())mCanDraw false}}private fun drawRoundRectLine(canvas: Canvas) {val lineRectF RectF(0f,0f,mSizeF.width,mSizeF.height)//原始图被Android系统拉伸放到屏幕上所以lineRectF也需要进行相同的拉伸。val originBmpSizeMapMatrix Matrix()originBmpSizeMapMatrix.setScale(getOriginBmpScaleToImageViewFactor(), getOriginBmpScaleToImageViewFactor())originBmpSizeMapMatrix.mapRect(lineRectF)lineRectF.offset(mTouchX - lineRectF.width() / 2f, mTouchY - lineRectF.height() / 2f)//绘制红色的lineRectF线框。val path Path()path.addRoundRect(lineRectF, 20f, 20f, Path.Direction.CW)mPaint.color Color.REDcanvas.drawPath(path, mPaint)}private fun getOriginBmpScaleToImageViewFactor(): Float {return (W.toFloat()) / (mOriginBmp!!.width)} } 运行后点击上图不同位置点 Android BitmapFactory.decodeResource读取原始图片装载成原始宽高BitmapKotlin_bitmapfactory解码宽高-CSDN博客文章浏览阅读856次。文章浏览阅读1.8k次。/*Java代码 将Drawable转化为Bitmap */ Bitmap drawableToBitmap(Drawable drawable) { int width drawable.getIntrinsicWidth();Android Drawable 转化成 Bitmap-CSDN博客。_bitmapfactory解码宽高https://blog.csdn.net/zhangphil/article/details/134449577 Android挖取原图中心区域RectF(并框线标记)放大到ImageView宽高Kotlin-CSDN博客文章浏览阅读395次点赞11次收藏11次。文章浏览阅读853次。【代码】Android矩阵setRectToRect裁剪Bitmap原图Matrix放大mapRect标记中心区域Kotlin。Android BitmapFactory.decodeResource读取原始图片装载成原始宽高BitmapKotlin_bitmapfactory解码宽高-CSDN博客。Android矩阵setRectToRect裁剪Bitmap原图Matrix放大mapRect标记中心区域Kotlin-CSDN博客。https://blog.csdn.net/zhangphil/article/details/136157116

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/928453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PCIe扫盲——AckNak 机制详解(二)

这一篇文章来简单地分析几个Ack/Nak机制的例子。 Example 1. Example of AckStep1 设备A准备依次向设备B发送5个TLP,其对应的序列号分别为3,4,5,6,7; Step2 设备B成功的接收到了TLP3,并将NEXT_RCV_SEQ从3加到4,但…

万宁网站建设公司360网站收录提交入口

1)对于.ziplinux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序。它们的参数选项很多,可用命令zip -help和unzip -help查看,这里只做简单介绍,举例说明一下其用法:# zip test.zip test.jpg test.pn…

2025桩基检测机构最新企业咨询服务推荐排行榜,海上桩基检测,水上桩基检测服务推荐这十家公司!

在建筑工程领域,桩基作为建筑物的基础支撑,其质量直接关系到整个工程的安全稳定性与使用寿命。随着我国建筑业的持续发展,桩基检测需求日益增长,但行业内也逐渐暴露出诸多问题。部分检测机构技术水平不足,缺乏先进…

算法坑点

后续补充完善点双连通分量缩点后建的新图点的数量会增加,如果原图是一条链的话每个点双开个新点,加上割点,总点数要开两倍; 无向基环树用拓扑剥叶子的时候,记得防止剥父亲节点的出度void topsort(){queue<int&…

完整教程:56、Ocelot 概述

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

互联网招聘网站排行网络广告网站怎么做

单元测试(Unit Testing):单元测试是一种软件测试方法,用于验证软件中最小的可测试单元(通常是函数或方法)是否按照预期工作。它通过编写测试用例来检查单元的输入和输出,以确保其功能正确性和稳定性。用例图(Use Case Diagram):用例图是一种UML(统一建模语言)图表,…

Windows系统安装MySQL Connector 利用C++ VS2022连接MySQL

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

ASP.NET Core SignalR 身份认证集成指南(Identity + JWT) - 详解

ASP.NET Core SignalR 身份认证集成指南(Identity + JWT) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…

utorrent 2.2.1

http://www.oldversion.com/windows/utorrent/ http://www.oldversion.com/windows/utorrent-2-2-1-build-25273-1 怎么下载?

青岛建站公司电话郑州网站建设公司电话多少

摘要&#xff1a;12个C语言面试题&#xff0c;涉及指针、进程、运算、结构体、函数、内存&#xff0c;看看你能做出几个&#xff01; 1.gets()函数 问&#xff1a;请找出下面代码里的问题&#xff1a; #include<stdio.h> int main(void) { char buff[10]; memset…

市场交易反心理特征之八:劣仓驱逐良仓

核心总结:“劣仓驱逐良仓”的问题其实很好解决,两个方面其一是要首先做到遵守信号,是否出现阴线?砖型图是否翻绿?如果没有就踏踏实实的拿着。其二,在持有期间,是否出现了大幅拉升?拉升后是否减仓了?主动减仓后…

【音视频】FFmpeg 编码H265 - 实践

【音视频】FFmpeg 编码H265 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&…

做题笔记18

10.5 模拟赛 T1 。 T2 。 T3 。 T4 不会。 P5472 [NOI2019] 斗主地

做网站关键字租域名多少钱

Python编程中常用的12种基础知识&#xff0c;其中肯定有你不会的&#xff01;人生苦短&#xff0c;我用Python1、正则表达式替换目标: 将字符串line中的 overview.gif 替换成其他字符串。人生苦短&#xff0c;我用Python2、遍历目录方法在某些时候&#xff0c;我们需要遍历某个…

专业网站建设平台做微商怎么样引流人脉

一台脂肪秤通过测试体重、体脂、BMI、水分等数据并给出相应提示&#xff0c;并且许多人都将体脂检测数据作为身体健康指数衡量标准&#xff0c;辅助用户来关注身体健康&#xff0c;同时可以通过蓝牙与手机APP应用相连&#xff0c;记录日常身体变化情况&#xff0c;根据变化情况…

WinRAR去广告版保姆级安装教程

WinRAR去广告版保姆级安装教程​背景 之前一直用的2345解压缩软件,结果发现这个软件在后台一直自启更改浏览器主页,还有安装其他软件跟弹窗广告,流氓软件无疑,所以卸载2345压缩软件,在网上找了一圈之后,发现还是…

英语_作文_8BU2_My View on Social Media

My View on Social Media Social media is now important to everyone, especially teenagers. According to a recent report, over 95% of teens lives are connected with it. It can be helpful. When we are busy…

小程序在哪个网站做wordpress图片清理

好 本文 我们来说说触摸事件 字面意思也非常好理解 就是我们手机手指触摸物体触发 我们先在编辑器组件介绍中 找到这个东西的基本用法 Button("跳转").onTouch((event: TouchEvent) > {})最明显的就是 event 的类型变了 点击事件的是 ClickEvent 而这里是 Touc…

C/C++与Java、Python、Go在各个阶段的区别

不同编程语言在预处理、编译、汇编、链接和运行等阶段存在显著差异,这主要源于语言设计目标(如开发效率、运行效率、跨平台性等)的不同。下面对比C/C++与Java、Python、Go在这些阶段的区别: 1. 预处理阶段 C/C++:…

个性创意网站wordpress tag生成的链接乱

参考链接&#xff1a; 参考文章 该参考文章的第一种方法&#xff1a;设置win10环境变量。 在设置完环境变量后&#xff0c;在pycharm终端上不能有效读取到刚刚设置的环境变量的&#xff0c;需要启动win的cmd&#xff0c;在项目路径下执行脚本。如下所示的对比&#xff1a; cm…