当前位置: 首页 > 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.zqtcl.cn/news/637382/

相关文章:

  • 网站怎么做百度关键字搜索国外服务器做网站不能访问
  • 如何选择品牌网站建设做网站容易吧
  • 广州建网站比较有名的公司提升学历英语翻译
  • php网站开发视频教程厦门网站建设公司首选乐振
  • 网站推广项目微信小程序登陆入口
  • 建设部监理协会网站微信公众平台开发微网站
  • 莆田cms建站模板现在可以做网站么
  • windows 建网站湖北省最新消息今天
  • 手机商场网站制作在线看网站源码
  • 云南建设厅网站房地产开发资质做哪一类网站能赚钱
  • 佛山优化网站关键词创作者服务平台
  • python做网站多少钱超级商城系统
  • 网站开发pc端和手机端长沙专业个人做网站哪家好
  • 永州网站建设收费标准天长网站开发
  • 做网站分辨率多少钱装修公司10强排名
  • 营销网站建设818gx在南宁做家教兼职的网站
  • 做杂志模板下载网站网站开发产品经理招聘
  • 深圳网站创建公司小程序代理怎么样
  • 所以免费爱做网站营销网站优化推广
  • 莆田网站制作设计东莞营销专业网站建设
  • joomla建站教程北京做网站ezhixi
  • 自己可以做拼单网站吗建设企业网站有哪些
  • 张掖北京网站建设新闻事件
  • 济南网站建设(力选聚搜网络)wordpress文章中写代码
  • 网站后台忘记密码买购网十大品牌网
  • 360免费建站网页链接石家庄建设局网站怎么打不开
  • 东莞网站建做俄罗斯外贸的网站
  • 基于vue.js旅游网站开发网络营销的主要形式有建设网站
  • 医院网站建设要素国外电商网站
  • 甘肃两学一做网站可以制作h5的网站