【讀書筆記《Android遊戲編程之從零開始》】15.遊戲開發基礎(剪下地區)

來源:互聯網
上載者:User

標籤:android   style   blog   http   ar   io   color   os   sp   

剪下地區也稱為可視地區,是由畫布進行設定的;它指的是在畫布上設定一塊地區,當畫布一旦設定了可視地區,那麼除此地區外,繪製的任何內容都將看不到;可視地區可以是圓形、矩形等等。

 畫布提供了三種設定可視地區的方法。

1.通過座標,設定矩形可視地區
clipRect(int left,int top,int right,int bottom)
作用:為畫布設定矩形可視地區
第一、二個參數:為可視地區的左上方
第三、四個參數:為可視地區的右下角

2.利用 Path 來設定可視地區的形狀
clipPath(Path path)
作用:為畫布設定可視地區
參數:Path執行個體

3.利用 Region 來對畫布設定可視地區
clipRegion(Region region)
作用:為畫布設定可視地區
參數:Region 執行個體

Region 表示地區的集合,所以它可以設定多個地區塊,而且可以通過這些地區塊之間的關係來處理一些問題;比如 Region 設定它所有地區塊相交的地區是否可見、設定相交地區只讓交集顯示等等。

Region 常用函數:
op(Rect rect,Op op)
作用:設定地區塊
第一個參數:Rect 執行個體
第二個參數:Region.Op 靜態值,表示地區塊的顯示方式。其中地區塊的顯示方式如下:
Region.Op.UNION: 地區全部顯示
Region.Op.INTERSECT:地區的交集顯示
Region.Op.XOR:不顯示交集地區


下面是執行個體示範,如下:

建立新項目,遊戲架構為 SurfaceView 遊戲架構。具體步驟參照“11.遊戲開發基礎(SurfaceView 遊戲架構、View 和 SurfaceView 的區別)”。

修改 MySurfaceView 類中的繪圖函數如下:

    private void myDraw() {        try {            canvas = sfh.lockCanvas();            if (canvas != null) {                    //通過圖片資源產生一張Bitmap 位元影像                Bitmap bmp = BitmapFactory.decodeResource(this.getResources(), R.drawable.pic01);                                canvas.save();                canvas.drawText("原圖:", 20, 20, paint);                canvas.drawBitmap(bmp, 20, 30,paint);                canvas.restore();                                canvas.save();                canvas.drawText("通過座標,設定矩形可視地區:", 20, 320, paint);                /**                 * 為畫布設定矩形可視地區                 * 第一、二個參數為可視地區的左上方                 * 第三、四個參數為可視地區的右下角                 */                canvas.clipRect(20,330,bmp.getWidth()+20,bmp.getHeight()/2+330);                canvas.drawBitmap(bmp, 20, 330,paint);                canvas.restore();                                canvas.save();                canvas.drawText("利用 Path 來設定可視地區的形狀,這裡為圓形可視地區:", 20, 620, paint);                Path path = new Path();                path.addCircle(20+bmp.getWidth()/2, 630+bmp.getHeight()/2, bmp.getWidth()/2, Direction.CCW);                /**                 * 為畫布設定可視地區                 * 參數:Path執行個體                 * 利用Paht 可以為位元影像設定任何需要的可視地區,這裡是設定一個圓形可視地區。                 */                canvas.clipPath(path);                canvas.drawBitmap(bmp, 20, 630, paint);                canvas.restore();                                canvas.save();                canvas.drawText("利用 Region 來對畫布設定可視地區:", 20, 920, paint);                Region region = new Region();                //地區塊全部顯示                region.op(new Rect(20,930,120,1030), Region.Op.UNION);                //不顯示交集地區                region.op(new Rect(50,930,100,1080), Region.Op.XOR);                canvas.clipRegion(region);                canvas.drawBitmap(bmp, 20, 930, paint);                canvas.restore();                }        } catch (Exception e) {        } finally {            if (canvas != null) {                sfh.unlockCanvasAndPost(canvas);            }        }    }

 

【讀書筆記《Android遊戲編程之從零開始》】15.遊戲開發基礎(剪下地區)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.