android中使用Canvas绘制指定位置和宽高度的图片

来源:互联网 发布:floyd算法思想 编辑:程序博客网 时间:2024/06/11 23:36
http://www.cnblogs.com/error404/archive/2012/02/05/2339255.html
/*---------------------------------       * 绘制图片       * @param       x屏幕上的x坐标       * @param       y屏幕上的y坐标       * @param       w要绘制的图片的宽度       * @param       h要绘制的图片的高度       * @param       bx图片上的x坐标       * @param       by图片上的y坐标       *        * @return      null       ------------------------------------*/        public static void drawImage(Canvas canvas, Bitmap blt, int x, int y,               int w, int h, int bx, int by) {          Rect src = new Rect();// 图片 >>原矩形           Rect dst = new Rect();// 屏幕 >>目标矩形             src.left = bx;          src.top = by;          src.right = bx + w;          src.bottom = by + h;            dst.left = x;          dst.top = y;          dst.right = x + w;          dst.bottom = y + h;           // 画出指定的位图,位图将自动--》缩放/自动转换,以填补目标矩形            // 这个方法的意思就像 将一个位图按照需求重画一遍,画后的位图就是我们需要的了           canvas.drawBitmap(blt, null, dst, null);          src = null;          dst = null;       }         /**       * 绘制一个Bitmap       *        * @param canvas 画布       * @param bitmap 图片       * @param x 屏幕上的x坐标       * @param y 屏幕上的y坐标       */        public static void drawImage(Canvas canvas, Bitmap bitmap, int x, int y) {          // 绘制图像 将bitmap对象显示在坐标 x,y上           canvas.drawBitmap(bitmap, x, y, null);       }
//    GameView.drawImage(canvas, mBitDestTop, miDTX, mBitQQ.getHeight(), mBitDestTop.getWidth(), mBitDestTop.getHeight()/2, 0, 0);    public static void drawImage(Canvas canvas, Bitmap blt, int x, int y, int w, int h, int bx, int by)    {                                                        //x,y表示绘画的起点,        Rect src = new Rect();// 图片        Rect dst = new Rect();// 屏幕位置及尺寸        //src 这个是表示绘画图片的大小        src.left = bx;   //0,0          src.top = by;        src.right = bx + w;// mBitDestTop.getWidth();,这个是桌面图的宽度,        src.bottom = by + h;//mBitDestTop.getHeight()/2;// 这个是桌面图的高度的一半        // 下面的 dst 是表示 绘画这个图片的位置        dst.left = x;    //miDTX,//这个是可以改变的,也就是绘图的起点X位置        dst.top = y;    //mBitQQ.getHeight();//这个是QQ图片的高度。 也就相当于 桌面图片绘画起点的Y坐标        dst.right = x + w;    //miDTX + mBitDestTop.getWidth();// 表示需绘画的图片的右上角        dst.bottom = y + h;    // mBitQQ.getHeight() + mBitDestTop.getHeight();//表示需绘画的图片的右下角        canvas.drawBitmap(blt, src, dst, null);//这个方法  第一个参数是图片原来的大小,第二个参数是 绘画该图片需显示多少。也就是说你想绘画该图片的某一些地方,而不是全部图片,第三个参数表示该图片绘画的位置                src = null;        dst = null;    }