Android ApiDemos樣本解析(59):Graphics->ColorFilters

來源:互聯網
上載者:User

Android ApiDemos樣本解析(59):Graphics->ColorFilters發表於 2011 年 05 月 23 日 由 guidebee

本例ColorFilters和下例ColorMatrix 涉及到影像處理中的很多專業術語:

Dither(映像的抖動處理,當每個顏色值以低於8位表示時,對應映像做抖動處理可以實現在可顯示顏色總數比較低(比如256色)時還保持較好的顯示效果: Dither on Wikipedia

Porter Duff Color Filter 也可以為Alpha Composting,指當在將一幅映像繪製在已有背景映像時如果融合前景和背景顏色的過程。Porter Duffer 定義了多種模式,每種模式使用不同的前景和背景色組合演算法: Alpha Composting on Wikipedia

Android中的類PorterDuffColorFilter 定義了Port Duff Color Filter, 例子使用八種不同的顏色兩種模式: 其中顏色為0時,對應的colorFilter為null.

1234567891011121314 mColors = new int[] { 0, 0xCC0000FF, 0x880000FF, 0x440000FF, 0xFFCCCCFF, 0xFF8888FF, 0xFF4444FF,}; mModes = new PorterDuff.Mode[] { PorterDuff.Mode.SRC_ATOP, PorterDuff.Mode.MULTIPLY,};

對於每個ColorFilter調用drawSample

123456789101112131415 private void drawSample(Canvas canvas, ColorFilter filter) { Rect r = mDrawable.getBounds(); float x = (r.left + r.right) * 0.5f; float y = (r.top + r.bottom) * 0.5f - mPaintTextOffset;  mDrawable.setColorFilter(filter); mDrawable.draw(canvas); canvas.drawText("Label", x+1, y+1, mPaint2); canvas.drawText("Label", x, y, mPaint);  for (Drawable dr : mDrawables) { dr.setColorFilter(filter); dr.draw(canvas); }}

ColorFilter的效果可以從文字“Label”來看,兩行文字只位移了一個像素,有重疊來看ColorFilter的不同效果,對應SRC_ATOP和MULTIPLY兩種模式,文字有可以以白色和黑色顯示:

感覺文字Lable在MULTIPLY模式下”Label”有點“凹下”的效果。除了SRC_ATOP和MULTIPLY之外,PorterDuff.Mode還定義定義了10多種不同模式:

from 
http://www.imobilebbs.com/wordpress/?p=1402

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.