六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 43|回复: 0

android 画图-----直接引用图像

[复制链接]

升级  82%

292

主题

292

主题

292

主题

进士

Rank: 4

积分
910
 楼主| 发表于 2013-1-15 02:47:35 | 显示全部楼层 |阅读模式
在这里写文章啥都不为,就是写自己的总结,不管错误和正确也好,都是自己的,写对写错与他人无关,也不希望别人回帖,谢谢。
     以后的文章都是sdk自带的 没有自己的任何内容。
import java.io.InputStream;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Shader;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;

public class AlphaBitmap extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new SampleView(this));
    }
   
    private static class SampleView extends View {
        private Bitmap mBitmap;
        private Bitmap mBitmap2;
        private Bitmap mBitmap3;
        private Shader mShader;
        
        private static void drawIntoBitmap(Bitmap bm) {
            float x = bm.getWidth();
            float y = bm.getHeight();
       // 建一个有制定对象的画布
            Canvas c = new Canvas(bm);
            Paint p = new Paint();
       // 主要用来消除边缘吧从效果上看 好像false的话有毛边
            p.setAntiAlias(true);
            
            p.setAlpha(0x555555);//灰色
            c.drawCircle(x/2, y/2, x/2, p);
            
            p.setAlpha(0x0000ff);//蓝色
           p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER));
//    下面是字体的相关设置
            p.setTextSize(20);
            String familyName = "宋体";
            Typeface font = Typeface.create(familyName,Typeface.ITALIC);
            p.setTypeface(font);
            p.setTextAlign(Paint.Align.CENTER);

            Paint.FontMetrics fm = p.getFontMetrics();

            c.drawText("我爱android", x/2, (y-fm.ascent)/2, p);
        }
        
        public SampleView(Context context) {
            super(context);
            setFocusable(true);
           // 得到图像的几种方法
            InputStream is = context.getResources().openRawResource(R.drawable.app_sample_code);
            mBitmap = BitmapFactory.decodeStream(is);
//从一幅图像抽取色值变为新的图像,一般是画笔的颜色 同下面  p.setColor(Color.BLUE);

            mBitmap2 = mBitmap.extractAlpha();

            mBitmap3 = Bitmap.createBitmap(200, 200, Bitmap.Config.ALPHA_8);
            drawIntoBitmap(mBitmap3);
            //一种渐变效果
            mShader = new LinearGradient(0, 0, 150, 70, new int[] {
                                         Color.RED, Color.GREEN, Color.BLUE },
                                         null, Shader.TileMode.MIRROR);
        }
        
        @Override protected void onDraw(Canvas canvas) {
            canvas.drawColor(Color.LTGRAY);

            Paint p = new Paint();
            float y = 10;
            
            p.setColor(Color.BLUE);
            canvas.drawBitmap(mBitmap, 10, y, p);
            y += mBitmap.getHeight() + 10;
            canvas.drawBitmap(mBitmap2, 10, y, p);
            y += mBitmap2.getHeight() + 10;
            p.setShader(mShader);
            canvas.drawBitmap(mBitmap3, 10, y, p);
        }
    }
}

如果把一幅图片变成一个可变图片之后,就可以在图片上打上自己的印记了,这里就不写了。这个程序主要是 怎么自己画一个图片,可以用在图片上画,也可以就如同一张白纸自己画,同时还有一个函数,可以用来提取外形的。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表