簡體   English   中英

Android Canvas中的復合操作

[英]Composite operations in Android Canvas

我剛開始使用Android開發,而且我來自JavaScript / HTML世界,因此我正在研究Android SDK的可能性。

HTML 5畫布支持復合操作(參見此處 )。

這可以在Android Canvas中使用嗎? 我掃描了Canvas類的API但找不到任何有用的東西。 我至少需要復合操作“source-in”或(如果這不可能)“source-atop”。

通過使用使用PorterDuffXfermodePaintCanvas上繪圖來處理PorterDuffXfermode

Paint p=new Paint();
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DARKEN));
canvas.drawBitmap(bitmap, 0, 0, p);

有關詳細信息,請參見此處 我還設法覆蓋onPaint以便我們可以將這個組合應用於繪制自己的元素。

我之前沒有考慮過做這些操作,但我認為有一種方法可以使用Rect形狀來完成它們。 您可以定義矩形以標出應該在畫布中繪制哪些區域,或者從源圖像中取出哪些區域,並且Rect類具有內置的一些比較功能。 例如,為了模仿源代碼,您可以使用setIntersect(Rect boundingBoxOfSource, Rect boundingBoxOfDestination)使您的新矩形僅具有兩個圖像的交叉區域。 然后,您可以將該矩形用作Canvas的一個繪制命令中的參數,告訴它僅從源圖像中獲取該矩形內的像素。 然后,按照執行繪圖命令的順序在Z軸上控制圖形。

自己找到了。 PorterDuffXfermode實現所有這些復合模式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM