android 画画
来源:互联网 发布:打字软件下载 编辑:程序博客网 时间:2024/06/10 07:24
package com.lyz.news.day32madia;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Matrix;import android.graphics.Paint;import android.os.Bundle;import android.view.View;import android.widget.ImageView;public class MainActivityCopyImage extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_copy); } public void onClick2(View v) { /* Log.i("MainActivity","11111111111111111111111111111111111111111111111"); BitmapFactory.Options options = new BitmapFactory.Options(); //不为像素申请内存,只获取宽高 options.inJustDecodeBounds = true;//只解析宽和高// 拿到宽和高 int imageWidth = options.outWidth; int imageheight = options.outHeight; //获取屏幕宽和高 Display dp = getWindowManager().getDefaultDisplay(); int width = dp.getWidth(); int height = dp.getHeight(); int scale=1; //计算比例 int scaleWidth =imageWidth/width; int scaleHeight =imageheight/height;// 下面这个括号要我穿一个Point,所以我们就传一个new Point() if (scale>=scaleHeight&&scale>=1){//如果小于1就是用缩放,已经很小了 scale=scaleHeight; }else if (scale>=scaleWidth&&scale>=1){ scale=scaleWidth; }// 设置缩放比例 options.inSampleSize=scale;// 加载图片开始 options.inJustDecodeBounds = false;*/ //加载图片 Bitmap和decodeFile,这个bitmap现在是不能更改的,无法加特效,只能显示 /** * 如果想改图片,需要在内存中生成一个副本也就一个拷贝,然后我们改拷贝,再把拷贝给显示出来 * 我想给他加一个水印,其实我们看到已经不是原图,一个拷贝的图;原图是只读我们加载出来就扔了, * 这个原图是只读的,无法改 */ /** *创建图片 副本 * 1,在内存中创建一个与原图一模一样的大小的bitmap对象,所以Config用原图的就行 * 一般看返回值要看对象.方法()看方法的返回值是什么,这句返回值就是什么; */ /** * bitmapCopy现在只是和srcbimap宽高一样但是它没有内容的,但是他是可读可写的, 真的btn一点什么也不显示,但是btn被图片给遮住了,所名真的是显示出来但是什么也没有 */ Bitmap srcbitmap = BitmapFactory.decodeFile("sdcard/haha.jpg"); Bitmap bitmapCopy = Bitmap.createBitmap(srcbitmap.getWidth(), srcbitmap.getHeight(), srcbitmap.getConfig()); //2.创建画笔 Paint paint=new Paint(); //创建画板来画画,把白纸放上 Canvas canvas=new Canvas(bitmapCopy); //开始画画把原图放在画板上srcbitmap, 相当于模特 canvas.drawBitmap(srcbitmap,new Matrix(),paint); //加载图片 Bitmap和decodeFile ImageView mivone = (ImageView) findViewById(R.id.iv_one); ImageView mivtwo = (ImageView) findViewById(R.id.iv_two); mivone.setImageBitmap(srcbitmap); mivtwo.setImageBitmap(bitmapCopy); }}
------------------------------、
package com.lyz.news.day32madia;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Matrix;import android.graphics.Paint;import android.os.Bundle;import android.widget.ImageView;public class MainActivityCmain extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_copy); /** * 如果想改图片,需要在内存中生成一个副本也就一个拷贝,然后我们改拷贝,再把拷贝给显示出来 * 我想给他加一个水印,其实我们看到已经不是原图,一个拷贝的图;原图是只读我们加载出来就扔了, * 这个原图是只读的,无法改 */ Bitmap bmSrc = BitmapFactory.decodeFile("sdcard/dog.jpg"); /** *创建图片 副本 * 1,在内存中创建一个与原图一模一样的大小的bitmap对象,所以Config用原图的就行 * 一般看返回值要看对象.方法()看方法的返回值是什么,这句返回值就是什么; */ /** * bitmapCopy现在只是和srcbimap宽高一样但是它没有内容的,但是他是可读可写的, 真的btn一点什么也不显示,但是btn被图片给遮住了,所名真的是显示出来但是什么也没有 */ /* Bitmap bitmapCopy = Bitmap.createBitmap(srcbitmap.getWidth(), srcbitmap.getHeight(), srcbitmap.getConfig()); //2.创建画笔 Paint paint = new Paint(); //3创建画板来画画,把白纸放上 Canvas canvas = new Canvas(bitmapCopy); //4开始画画把原图放在画板上, 相当于模特 Matrix mt = new Matrix(); //平移// mt.setTranslate(20,140); canvas.drawBitmap(srcbitmap, mt, paint);*/ //代码在哪行写还是很重要的,要有逻辑// canvas.drawLine(10,10,140,140,paint);不出现黑线呢??? //加载图片 Bitmap和decodeFile Bitmap bmCopy = Bitmap.createBitmap(bmSrc.getWidth(), bmSrc.getHeight(), bmSrc.getConfig()); //2.创建画笔对象 Paint paint = new Paint(); //3.创建画板对象,把白纸铺在画板上 Canvas canvas = new Canvas(bmCopy); //4.开始作画,把原图的内容绘制在白纸上 Matrix mt = new Matrix(); //平移 mt.setTranslate(20, 240); //第一个参数扩大缩放,第二参数缩放,所谓 mt.setScale(2,1); //sx:水平方向的缩放比例 //sy:竖直方向的缩放比例 :1是不变// mt.setScale(0.5f, 0.5f);// mt.setScale(0.5f, 0.5f, bmCopy.getWidth() / 2, bmCopy.getHeight() / 2); //旋转// mt.setRotate(45, bmCopy.getWidth() / 2, bmCopy.getHeight() / 2); //镜面,就是水平翻转、看水里左拿剑在水里就是右手 mt.setScale(-1,1);//宽的坐标都乘以负-1 mt.postTranslate(bmCopy.getWidth(),0);//平移一个图片的宽度距离// mt.setScale(-1, 1);// mt.postTranslate(bmCopy.getWidth(), 0); //倒影 mt.setScale(1, -1); mt.postTranslate(0, bmCopy.getHeight()); canvas.drawBitmap(bmSrc, mt, paint); ImageView mivone = (ImageView) findViewById(R.id.iv_one); ImageView mivtwo = (ImageView) findViewById(R.id.iv_two); mivone.setImageBitmap(bmSrc); mivtwo.setImageBitmap(bmCopy); }} /* public void onClick2(View v) { *//** * 如果想改图片,需要在内存中生成一个副本也就一个拷贝,然后我们改拷贝,再把拷贝给显示出来 * 我想给他加一个水印,其实我们看到已经不是原图,一个拷贝的图;原图是只读我们加载出来就扔了, * 这个原图是只读的,无法改 * <p/> * 创建图片 副本 * 1,在内存中创建一个与原图一模一样的大小的bitmap对象,所以Config用原图的就行 * 一般看返回值要看对象.方法()看方法的返回值是什么,这句返回值就是什么; * <p/> * <p/> * bitmapCopy现在只是和srcbimap宽高一样但是它没有内容的,但是他是可读可写的, * 真的btn一点什么也不显示,但是btn被图片给遮住了,所名真的是显示出来但是什么也没有 *//* Bitmap srcbitmap = BitmapFactory.decodeFile("sdcard/dog.jpg"); *//** *创建图片 副本 * 1,在内存中创建一个与原图一模一样的大小的bitmap对象,所以Config用原图的就行 * 一般看返回值要看对象.方法()看方法的返回值是什么,这句返回值就是什么; *//* *//** * bitmapCopy现在只是和srcbimap宽高一样但是它没有内容的,但是他是可读可写的, 真的btn一点什么也不显示,但是btn被图片给遮住了,所名真的是显示出来但是什么也没有 *//* Bitmap bitmapCopy = Bitmap.createBitmap(srcbitmap.getWidth(), srcbitmap.getHeight(), srcbitmap.getConfig()); //2.创建画笔 Paint paint=new Paint(); //创建画板来画画,把白纸放上 Canvas canvas=new Canvas(bitmapCopy); //开始画画把原图放在画板上, 相当于模特 canvas.drawBitmap(srcbitmap,new Matrix(),paint); //加载图片 Bitmap和decodeFile ImageView mivone = (ImageView) findViewById(R.id.iv_one); ImageView mivtwo = (ImageView) findViewById(R.id.iv_two); mivone.setImageBitmap(bitmapCopy); mivtwo.setImageBitmap(srcbitmap); }}*/************************************
package com.lyz.news.day32madia;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.util.Log;import android.view.Display;import android.view.View;import android.widget.ImageView;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /** * 视频用的虚拟机 内存比较小所以需要,缩放 * 而我们现在的手机基本申请的虚拟内存很大了,直接用不会蹦; * * @param v */ public void onClick(View v) { Log.i("MainActivity", "11111111111111111111111111111111111111111111111"); BitmapFactory.Options options = new BitmapFactory.Options(); //不为像素申请内存,只获取宽高 options.inJustDecodeBounds = true;//只解析宽和高 BitmapFactory.decodeFile("sdcard/haha.jpg", options);// 拿到宽和高 int imageWidth = options.outWidth; int imageheight = options.outHeight; //获取屏幕宽和高 Display dp = getWindowManager().getDefaultDisplay(); int width = dp.getWidth(); int height = dp.getHeight(); int scale = 1;//默认值是1表示不缩放 //计算比例 int scaleWidth = imageWidth / width;//算出水平缩放比例 int scaleHeight = imageheight / height; // 下面这个括号要我穿一个Point,所以我们就传一个new Point() if (scale >= scaleHeight && scale >= 1) {//如果小于1就是用缩放,已经很小了 scale = scaleHeight; } else if (scale >= scaleWidth && scale >= 1) { scale = scaleWidth; }// 设置缩放比例大小设置进去 options.inSampleSize = scale;// 加载图片开始 options.inJustDecodeBounds = false;// //加载图片 Bitmap和decodeFile,这个bitmap现在是不能更改的,无法加特效,只能显示 //返回一个更小的图片的来节省内存// dp.getSize(new Point());没正Point //加载图片 Bitmap和decodeFile /** * 如果想改图片,需要在内存中生成一个副本也就一个拷贝,然后我们改拷贝,再把拷贝给显示出来 * 我想给他加一个水印,其实我们看到已经不是原图,一个拷贝的图;原图是只读我们加载出来就扔了, * 把参数给options再塞入到doceFile */ Bitmap bitmap = BitmapFactory.decodeFile("sdcard/haha.jpg", options); ImageView miv = (ImageView) findViewById(R.id.iv_tp);// 在视图中显示我们的处理后的图片 miv.setImageBitmap(bitmap); }}
0 0
- android 画画
- android画画板
- android 画画板
- Android画画板剖析
- Android 画画板
- Android画画板
- 画画
- Android小应用-----画画板
- android—图片画画板
- Android之Canvas画画板
- android图片_画画板
- Android画画板小案例
- 让Android程序教你画画
- android实现简单的画画板
- 2015年第一篇:Android 画画板
- Android自定义控件系列三:如何画画
- Android--简单的画画板实例代码
- Android 实现简单的画画版一
- andorid画画板
- Spring MVC架构原理
- 关于Unity3D的编辑器崩溃时的线索定位
- QtQuick学习笔记(三)组件
- Linuxshell脚本之if条件判断
- android 画画
- POJ 1904 King's Quest(强连通分量+匹配)
- 欢迎使用CSDN-markdown编辑器
- 怎么知道属性表的field的fieldtype
- github冲突
- 匿名内部类
- (启动H5本地存储)WebView显示网页出现Uncaught TypeError: Cannot call method 'getItem' of null异常
- CSS浮动与定位
- SQL server 2008详细安装步骤(带图)