难以理解的drawBitmap( Bitmap bitmap, Rect src, Rect dst, Paint paint)


    /**
  绘制指定的位图,自动缩放/翻译以填充
*目标矩形。如果源矩形不是NULL,则
*指定要绘制的位图的子集。
*
* <BR>注意:如果涂料中含有maskfilter生成一个面具,
*超出位图的宽度/高度(如blurmaskfilter),
*然后绘制位图,就像它在一个带有夹子模式的着色器中一样。
因此,原来宽度/高度之外的颜色将是边缘。
*颜色复制。
*
<此函数<忽略与位图相关联的密度>。
*这是因为源和目标矩形坐标。
*空间是在各自的密度,所以必须已经有
*适用的比例因子。
     * @param bitmap The bitmap to be drawn
     * @param src    May be null. 这是位图的子集
     * @param dst    位图将被缩放/翻译的矩形。适合
     * @param paint  May be null. The paint used to draw the bitmap
     */
    public void drawBitmap(@NonNull Bitmap bitmap, @Nullable Rect src, @NonNull Rect dst,
            @Nullable Paint paint) {

从翻译来说是很难看懂的,

弄了一张宽700 高1026的图片,
若果直接700x1026绘制填写是无法显示全部的

实现下图的效果是非常不容易的.

  Rect src=new Rect();
        src.top=0;
        src.right=1026/700*1080*2;
        src.left=0;
        src.bottom=1026/700*1920*2;

        Rect det=new Rect();//代表是从画布的哪里开始绘制,从哪里结束。这里右边为什么有一点点黄色的边框大家也应该明白了吧,
        det.top=0;
        det.right=1070;//见证右边的20px
        det.left=0;
        det.bottom=1800;

        canvas.drawBitmap(bitmapBg,src,det,paint);
        Bitmap bitmapSrc = BitmapFactory.decodeResource(getResources(), R.drawable.zheng2showzhengimg);

让一张图片700x1026的图片完整显示在1080x1920的手机上还真不容易.


image.png

再试试缩小图片为手机的1半看看
1080/1080/1920=607
缩小到自身的一半

具体代码

 Rect src=new Rect();
        src.top=0;
        src.right=1026/700*1080*2;
        src.left=0;
        src.bottom=1026/700*1920*2;

        Rect det=new Rect();
        det.top=0;
        det.right=607;
        det.left=0;
        det.bottom=1080;
        paint.setColor(Color.RED);
        paint.setStrokeWidth(20);
        canvas.drawLine(0,det.bottom,det.right,det.bottom,paint);



        canvas.drawBitmap(bitmapBg,src,det,paint);
        Bitmap bitmapSrc = BitmapFactory.decodeResource(getResources(), R.drawable.zheng2showzhengimg);

image.png

可以看出来det参数代表图片永远无法超出它,而前者src 是图片比例的计算问题了,但是这里直接填写为图片的高宽会怎么呢?


        Rect src=new Rect();
        src.top=0;
        src.right=700;
        src.left=0;
        src.bottom=1026;
        paint.setColor(Color.RED);
        paint.setStrokeWidth(20);
        canvas.drawLine(0,src.bottom,src.right,src.bottom,paint);



        canvas.drawBitmap(bitmapBg,src,src,paint);
        Bitmap bitmapSrc = BitmapFactory.decodeResource(getResources(), R.drawable.zheng2showzhengimg);

出现下图的效果,我的脑壳也不知道怎么运转了


image.png

,大概是图片必须必指定区域大,而且要大2倍以上才能完整显示图,不信?再试试吧

        Rect src=new Rect();
        src.top=0;
        src.right=1080;
        src.left=0;
        src.bottom=1920;
        paint.setColor(Color.RED);
        paint.setStrokeWidth(20);
        canvas.drawLine(0,src.bottom,src.right,src.bottom,paint);
        canvas.drawBitmap(bitmapBg,src,src,paint);
        Bitmap bitmapSrc = BitmapFactory.decodeResource(getResources(), R.drawable.zheng2showzhengimg);

可谓你大我也大,可是原图实际上明明没那么大,为何需要控制src的大小超大才能显示完全呢??如下图虽然显示的区域更多了,可是给人的感觉就是图片的大小似乎超过1080x1920的大小,实际上并没有的,不存在的,那么是不是手机分辨率省电导致的? 这个我不信,和这没关系。这我会绘制的线条都正常显示的。


image.png

最后再来一把实验就结束本次研究,以后研究图片还是用缩放函数比较靠谱,这玩意网上也找不到什么方案,只知道要比dst大才能显示完全

已被玩坏,如今任何修改都不现实了。坑坑坑

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,599评论 1 180
  • 本文参考自: Google的官方权威适配文档 郭霖:Android官方提供的支持不同屏幕大小的全部方法 Storm...
    M悇芐冋忆阅读 12,779评论 5 56
  • 似有似无,若即若离,缘是世上最难解的谜团。以为你离我远去,却看见了你的眼泪;以为你近在身旁,却看不见你的模...
    冰夫阅读 121评论 0 0
  • 将多个纹理组合起来映射到一个单一纹理,立方体贴图含有6个2D纹理对应每个面。 特点:立方体贴图可使用方向向量对其索...
    龙遁流阅读 1,096评论 0 1
  • ♥ 桃小姐喜欢听歌,尤其喜欢听歌词有内涵的,曾经听Eason的《葡萄成熟时》有一句歌词,深深触动了我——日后...
    桃成蹊小姐阅读 494评论 0 0