wang_peng1 发表于 2013-1-15 02:47:35

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

在这里写文章啥都不为,就是写自己的总结,不管错误和正确也好,都是自己的,写对写错与他人无关,也不希望别人回帖,谢谢。
     以后的文章都是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);
      }
    }
}

如果把一幅图片变成一个可变图片之后,就可以在图片上打上自己的印记了,这里就不写了。这个程序主要是 怎么自己画一个图片,可以用在图片上画,也可以就如同一张白纸自己画,同时还有一个函数,可以用来提取外形的。
页: [1]
查看完整版本: android 画图-----直接引用图像