2010-11-14 78 views
1

說,我想創建一個自定義控制,將是這個樣子:阿爾法合成問題

http://karmalita.com/stuff/alpha1.png

彈出氣球的寬度可以改變,而「指針三角」的相對位置也改變。當然,額外的圖形/文字將繪製在最上面。

我想要它基於圖像,而不是嘗試做整個事情向量。當然,這些圖像具有不同的半透明性,這是複雜性出現的地方。

我知道有這樣做的各種方式(目前我使用四象,其中一個被複制一堆倍....它的工作原理,但凌亂的),但我感興趣的是找到最簡單的,最乾淨的方式。如果我可以爲主矩形(左下角)使用九個補丁,然後在其頂部繪製指針三角形(右下角),那麼會更好。

http://karmalita.com/stuff/alpha2.png

當然這是行不通的,因爲矩形的下邊緣將通過指針三角流血,日影會積累等

的,但有一些波特 - 達夫我能做的魔法?

或者我應該簡單地掩蓋了指針的使用逆剪輯矩形區域,然後繪製九宮格(適當地拉伸),所以它看起來是這樣的....

http://karmalita.com/stuff/alpha3.png

。 ...然後刪除剪輯矩形,然後在剪輯矩形區域中繪製指針三角形?

還是什麼?有沒有更簡單/更好/更有效的方法?

儘管我很喜歡這個特定問題的解決方案,但我最感興趣的是這些場景的一般解決方案。

回答

0

有趣的一個...

我正要說「沒有,有除逆剪輯矩形液沒辦法」,不過我有一個(未經測試)的想法:

當你將箭頭部分添加到常規9貼片氣球中,結果(幸運的是)所有像素都變得更加不透明。

因此(這裏是未經測試的位),您應該能夠預先計算「箭頭」修補程序的修改版本,該修補程序在應用於常規氣球頂部時會產生正確的效果:例如,生成的箭頭修補程序在常規修補程序已經發揮作用的地方會減少影子。

我會讓你考慮一下數學,但我想這很簡單。

+0

感謝羅迪....有趣的想法,但我敢肯定它不會工作,至少不會像一般的解決方案。正如你所說,它總是會變得更加不透明,並且我想要的區域至少保持相同的alpha值。但是你不能在不增加不透明度的情況下改變顏色。 – rob 2010-11-14 21:30:12

+0

@rob:「但是你不能在不增加不透明度的情況下改變顏色」。確實如此。我認爲你的例子不需要這個。 :-)你的'預先計算'的代碼可以驗證結果是否可以接受。 – Roddy 2010-11-14 22:25:27