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
原创粉丝点击