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

北京网站设计网站设计公司网站建设业务好做吗

北京网站设计网站设计公司,网站建设业务好做吗,开发公众号平台,携永东方 wordpress包含功能#xff1a; 包含 获取当前画板的截图、设置画笔样式、获取画笔样式、设置画笔宽度、获取画笔宽度、设置画笔颜色、获取画笔颜色、加载图片、获取图片位图对象、设置图片位图对象#xff0c;并在画布上绘制图片、撤销上一步操作、重做上一步撤销的操作、清空所有绘图…包含功能 包含  获取当前画板的截图、设置画笔样式、获取画笔样式、设置画笔宽度、获取画笔宽度、设置画笔颜色、获取画笔颜色、加载图片、获取图片位图对象、设置图片位图对象并在画布上绘制图片、撤销上一步操作、重做上一步撤销的操作、清空所有绘图路径重新绘制位图 自定义视图组件 package com.zx.drawing_board;import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.net.Uri; import android.os.Bundle; import android.os.Parcelable; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View;import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Stack;public class DrawingBoard extends View {// 上下文对象用于获取资源和应用程序信息public Context context;// 画布对象用于绘制图形public Canvas canvas;// 画笔对象用于设置绘制样式和颜色public Paint paint;// 位图对象用于在其中进行绘制操作public Bitmap bitmap;// 绘制路径对象记录用户绘制的路径public Path path;// 图片的URI地址public Uri uri;// 图片位图对象用于加载图片private Bitmap mImageBitmap;// 保存用户绘制路径的栈结构private StackPath paths new Stack();/*** 构造函数创建一个新的FingerPainterView对象* param context 上下文对象用于获取资源和应用程序信息*/public DrawingBoard(Context context) {super(context);// 执行初始化方法init(context);}/*** 构造函数创建一个新的FingerPainterView对象* param context 上下文对象用于获取资源和应用程序信息* param attrs 属性集合对象用于获取视图的自定义属性*/public DrawingBoard(Context context, AttributeSet attrs) {super(context, attrs);// 执行初始化方法init(context);}/*** 构造函数创建一个新的FingerPainterView对象* param context 上下文对象用于获取资源和应用程序信息* param attrs 属性集合对象用于获取视图的自定义属性* param defStyle 样式属性用于设置默认样式*/public DrawingBoard(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);// 执行初始化方法init(context);}/*** 获取当前画板的截图* return 画板的截图*/public Bitmap getScreenshot() {return Bitmap.createBitmap(bitmap);}/*** 初始化方法设置默认的画笔样式和颜色* param context 上下文对象用于获取资源和应用程序信息*/private void init(Context context) {this.context context;// 创建路径对象和画笔对象path new Path();paint new Paint();// 默认的画笔样式和颜色paint.setAntiAlias(true);paint.setStyle(Paint.Style.STROKE);paint.setStrokeJoin(Paint.Join.ROUND);paint.setStrokeWidth(20);paint.setStrokeCap(Paint.Cap.ROUND);paint.setARGB(255,0,0,0);}/*** 设置画笔样式* param brush 画笔样式*/public void setBrush(Paint.Cap brush) {paint.setStrokeCap(brush);}/*** 获取画笔样式* return 画笔样式*/public Paint.Cap getBrush() {return paint.getStrokeCap();}/*** 设置画笔宽度* param width 画笔宽度*/public void setBrushWidth(int width) {paint.setStrokeWidth(width);}/*** 获取画笔宽度* return 画笔宽度*/public int getBrushWidth() {return (int) paint.getStrokeWidth();}/*** 设置画笔颜色* param colour 画笔颜色*/public void setColour(int colour) {paint.setColor(colour);}/*** 获取画笔颜色* return 画笔颜色*/public int getColour() {return paint.getColor();}/*** 加载图片* param uri 图片的URI地址*/public void load(Uri uri) {this.uri uri;}/*** 获取图片位图对象* return 图片位图对象*/public Bitmap getmImageBitmap() {return mImageBitmap;}/*** 设置图片位图对象并在画布上绘制图片* param mImageBitmap 图片位图对象*/public void setmImageBitmap(Bitmap mImageBitmap) {this.mImageBitmap mImageBitmap;canvas.drawColor(Color.WHITE);canvas.drawBitmap(mImageBitmap, 0, 0, paint);}/*** 撤销上一步操作*/public void undo() {if (!paths.isEmpty()) {// 移除最近的路径并重新绘制位图paths.pop();redrawBitmap();}}/*** 重做上一步撤销的操作*/public void redo() {if (!paths.isEmpty()) {// 将最近撤销的路径重新添加到绘图路径中并重新绘制位图Path lastPath paths.peek();paths.push(new Path(lastPath));redrawBitmap();}}/*** 清空所有绘图路径重新绘制位图*/public void clear() {paths.clear();redrawBitmap();}Overridepublic Parcelable onSaveInstanceState() {Bundle bundle new Bundle();// 保存父类视图状态bundle.putParcelable(superState, super.onSaveInstanceState());try {// 将位图保存到临时缓存文件中以克服Binder事务大小限制File f File.createTempFile(fingerpaint, .png, context.getCacheDir());bitmap.compress(Bitmap.CompressFormat.PNG, 100, new FileOutputStream(f));// 将临时文件名保存到bundle中bundle.putString(tempfile, f.getAbsolutePath());} catch(IOException e) {Log.e(FingerPainterView, e.toString());}return bundle;}Overridepublic void onRestoreInstanceState(Parcelable state) {if (state instanceof Bundle) {Bundle bundle (Bundle) state;try {// 从bundle中获取缓存文件File f new File(bundle.getString(tempfile));Bitmap b BitmapFactory.decodeStream(new FileInputStream(f));// 需要复制位图以创建可变版本bitmap b.copy(b.getConfig(), true);b.recycle();f.delete();} catch(IOException e) {Log.e(FingerPainterView, e.toString());}state bundle.getParcelable(superState);}super.onRestoreInstanceState(state);}Overrideprotected void onDraw(Canvas canvas) {// 画布是白色的并在顶部绘制带有alpha通道的位图canvas.drawColor(Color.WHITE);canvas.drawBitmap(bitmap, 0, 0, paint);// 显示当前的绘图路径for (Path p : paths) {canvas.drawPath(p, paint);}canvas.drawPath(path, paint);}Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) {// 在Activity创建后当视图被膨胀时调用if(bitmapnull) {if(uri!null) {try {// 尝试加载提供的uri并进行缩放以适应我们的画布InputStream stream context.getContentResolver().openInputStream(uri);Bitmap bm BitmapFactory.decodeStream(stream);bitmap Bitmap.createScaledBitmap(bm, Math.max(w, h), Math.max(w, h), false);stream.close();bm.recycle();} catch(IOException e) {Log.e(FingerPainterView, e.toString());}}else {// 创建一个正方形位图以便即使在旋转到横向时也可绘制bitmap Bitmap.createBitmap(Math.max(w,h), Math.max(w,h), Bitmap.Config.ARGB_8888);}}canvas new Canvas(bitmap);}/*** 触摸事件处理方法用于绘制路径*/Overridepublic boolean onTouchEvent(MotionEvent event) {float x event.getX();float y event.getY();switch (event.getAction()) {case MotionEvent.ACTION_DOWN:// 按下手指时重置路径并移动到指定位置path.reset();path.moveTo(x, y);path.lineTo(x, y);invalidate();break;case MotionEvent.ACTION_MOVE:// 手指移动时连线到当前位置path.lineTo(x, y);invalidate();break;case MotionEvent.ACTION_UP:// 手指抬起时将路径保存并重置路径paths.push(new Path(path));path.reset();invalidate();break;}return true;}/*** 重新绘制位图根据当前的绘图路径*/private void redrawBitmap() {bitmap.eraseColor(Color.WHITE);for (Path p : paths) {canvas.drawPath(p, paint);}invalidate();} } 用法 ?xml version1.0 encodingutf-8? RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivitycom.zx.drawing_board.DrawingBoardandroid:idid/fpandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent//RelativeLayout 效果
http://www.pierceye.com/news/637382/

相关文章:

  • 箱包 东莞网站建设公司网站建设与设计制作
  • 网站如何做点击链接地址直播平台排行榜前十名
  • 万网域名指向网站wordpress 下载媒体库
  • 小店网站制作php做的网站首页是什么文件
  • i深建官方网站淮南网络营销哪家强
  • 网上网站怎么做织梦网站模块
  • 怎么新建自己的网站百度广告推广费用
  • 北京 科技网站建设上海短视频推广公司
  • 帮别人做网站哪里可以接单大型网站开发团队的美工需要什么工作经验和教育背景及薪酬
  • 网站开发工程师社交哔哩哔哩网页版入口2023在线观看
  • 凡客 网站设计wordpress也没
  • 深圳的网站建设公司排名电话外呼系统呼叫中心系统
  • 2022没封的网站免费的闵行区网站建设
  • 网站域名做入什么科目网络营销的主要内容是什么
  • 网站平面模板网站建设招标模板
  • 网站系统升级需要多久渐变网站
  • 网站建设数据库代码做煤的网站app
  • 做家电维修网站能接到单吗十大赚钱小程序
  • 手机网站表单页面制作小游戏网站审核怎么做
  • 浅谈高校门户网站建设的规范标准wordpress改变文章页宽度
  • 做网站必须得ipc支部网站建设
  • 受欢迎的医疗网站建设常德网站开发哪家好
  • 小区服务网站怎么做常州网站制作哪家好
  • 全国各大网站网站制度建设情况
  • 两学一做网站视频软文广告是什么意思
  • 网站等级保护如何做谷歌推广方案
  • 哪些网站做免费送东西的广告nas怎么做网站服务器
  • 网站开发用什么百度一下首页官网百度
  • 上海做saas平台网站的公司商城网站程序
  • 最好的免费建站网站做设计接私活的网站