正文

圖像合成(5)

Android多媒體開(kāi)發(fā)高級(jí)編程 作者:(美)艾佛瑞


如果已經(jīng)選擇了兩幅圖像,且兩個(gè)位圖對(duì)象均已完成實(shí)例化,那么能夠繼續(xù)合成操作。這個(gè)過(guò)程與本章之前的示例非常類似。首先,創(chuàng)建一個(gè)空的可變位圖對(duì)象,它的大小和配置與第一個(gè)位圖對(duì)象(bmp1)相同。隨后,根據(jù)它構(gòu)建一個(gè)Canvas對(duì)象和一個(gè)Paint對(duì)象。我們只會(huì)在該畫布上繪制第一個(gè)位圖對(duì)象(bmp1),因此它變成了合成操作的目標(biāo)。

現(xiàn)在可以設(shè)置Paint對(duì)象上的過(guò)渡模式。通過(guò)傳入一個(gè)定義操作模式的常量,實(shí)例化一個(gè)新的PorterDuffXfermode對(duì)象。然后,在Canvas對(duì)象上繪制第二個(gè)位圖對(duì)象,并且將ImageView設(shè)置為新的位圖對(duì)象。以下版本的代碼將使用MULTIPLY模式。

 

               if (onePicked && twoPicked){

                    Bitmap drawingBitmap = Bitmap.createBitmap(bmp1.

                            getWidth(),bmp1.getHeight(), bmp1.getConfig());

                    canvas = new Canvas(drawingBitmap);

                    paint = new Paint();

                    canvas.drawBitmap(bmp1, 0, 0, paint);

                    paint.setXfermode(new PorterDuffXfermode(android.

                           graphics.PorterDuff.Mode.MULTIPLY));

                    canvas.drawBitmap(bmp2, 0, 0, paint);

 

                    compositeImageView.setImageBitmap(drawingBitmap);

               }

          }

     }


上一章目錄下一章

Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)