zoukankan      html  css  js  c++  java
  • android canvas的drawBitmap

    1、基本的绘制图片方法

         
       //Bitmap:图片对象,left:偏移左边的位置,top: 偏移顶部的位置
        drawBitmap(Bitmap bitmap, float left, float top, Paint paint)

    2、对图片剪接和限定显示区域

       第一个Rect 代表要绘制的bitmap 区域,第二个 Rect 代表的是要将bitmap 绘制在屏幕的什么地方

    drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint);

    Rect src: 是对图片进行裁截,若是空null则显示整个图片

    RectF dst:是图片在Canvas画布中显示的区域,
               大于src则把src的裁截区放大,
               小于src则把src的裁截区缩小。

    此时我先定义两个Rect,mSrcRect 取值为整个Bitmap 区域 ,mDestRect 取值为view左上方和bitmap同样大小;

    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. private Rect mSrcRect, mDestRect;  
    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. mSrcRect = new Rect(0, 0, mBitWidth, mBitHeight);  
    2. mDestRect = new Rect(0, 0, mBitWidth, mBitHeight);  

    在onDraw 里绘制该位图:

    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. canvas.drawBitmap(mBitmap, mSrcRect, mDestRect, mBitPaint);  

    画在左上方似乎缺乏美感,我们把美女画在view的中心,没错,我们只需要改变mDestRect:

    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. // 计算左边位置  
    2. int left = mHalfWidth - mBitWidth / 2;  
    3. // 计算上边位置  
    4. int top = mHalfHeight - mBitHeight / 2;  
    5. mDestRect = new Rect(left, top, left + mBitWidth, top + mBitHeight);  

    位置计算的时候,只需要注意在android屏幕坐标系里,左上角的位置是(0,0),往右往下为正,此时效果如下:

  • 相关阅读:
    MIUI(Android)使用Webview上传文件
    使用EntityFramework中DbSet.Set(Type entityType)方法碰到的问题
    Web文件管理:elFinder.Net(支持FTP)
    ASP.NET 根据现有动态页面生成静态Html
    LaTeX学习
    Java Integer剖析
    20140711 loop
    20140711 eat
    20140711 set
    20140710 loop
  • 原文地址:https://www.cnblogs.com/zhengtu2015/p/5871919.html
Copyright © 2011-2022 走看看