筆頭。。
          實(shí)踐啟示
          posts - 14,comments - 3,trackbacks - 0
              porter-duff等式很簡(jiǎn)單,記得上學(xué)時(shí)一般接觸的等式就叫定理啥的,為啥計(jì)算機(jī)的科學(xué)就只能叫等式呢,感覺(jué)上差了個(gè)檔次
              在說(shuō)port-duff等式前先說(shuō)說(shuō)計(jì)算機(jī)的顏色的表示,簡(jiǎn)單來(lái)說(shuō)是RGB,再加上個(gè)Alpha透明度,這段下面的話(huà)可以跳過(guò)。計(jì)算機(jī)顏色以RGBchannel三原色來(lái)編碼(255,255,255)為白色,每種顏色channel的范圍是0-255,也有其它編碼方式如YUV,因?yàn)槲也欢跃筒幌龟恕5珜?duì)于porter-duff除了三原色channel、定義了另一channel,Alpha channel,Alpha表示透明度,范圍也為0-255。可以查看java-doc的AlphaComposite類(lèi),其中可以看到(A,R,G,B)表示顏色。(怎么感覺(jué)有點(diǎn)像科普文章了
              好了,正式話(huà)題。
              A:透明度channel,C:顏色channel
              下面是看一本書(shū)的源碼的應(yīng)用程序,Src為紅色橢圓,Dst為藍(lán)色矩形
             
             
                
              Clear (Ar=0,Cr=0)
              Color和alpha都是0,dst被src覆蓋的像素會(huì)消失
             
                                                           
              Dst (Ar=Ad,Cr=Cd)
              無(wú)論覆蓋在dst的顏色是什么,都不會(huì)顯示該覆蓋顏色
             
              DstAtop
              Ar=As(1-Ad)+AsAd=As
              Cr=Cs(1-Ad)+CdAs
              效果是似乎Dst覆蓋在Src上
             
              DstIn和DstOut
              DstIn(Ar=Ad*As,Cr=Cd*As) DstOut(Ar=Ad*(1-As),Cr=Cd*(1-As)
              DstIn和DstOut是相反的,不考慮源像素顏色,使用源像素的透明度影響目標(biāo)像素
             
              DstOver
              Ar=As*(1-Ad)+Ad;
              Cr=Cs*(1-Ad)+Cd;Dst部分覆蓋Src顯示,而且dst部分不受alpha影響。Dst外的Src部分正常顯示
             
              Src
              Ar=As
              Cr=Cs
              Dst被src覆蓋部分不顯示。其他正常,src正常顯示
             
              SrcAtop
              Ar=As*Ad+Ad*(1-As)=Ad;
              Cr=Cs*Ad+Cd*(1-As)
              Src在Dst部分與Dst混合,Dst顏色不丟失
              Src在Dst外顏色不顯示
             
              SrcIn
              Ar=As*Ad;
              Cr=Cs*Ad;
              Src在Dst部分替換Dst
              Src在Dst外舍棄
             
              SrcOut
              Ar=As*(1-Ad);
              Cr=Cs*(1-Ad);
              Src在Dst內(nèi)丟棄任何顏色
              Src在Dst外正常顯示
             
              SrcOver
              Ar=As+Ad(1-As)
              Cr=Cs+Cd(1-As);
              經(jīng)常見(jiàn)到的Ar和Cr混合
             
              XOR
              公式太長(zhǎng)了,就不寫(xiě)了,
              Src在Dst外的正常顯示
              Src在Dst內(nèi)的根據(jù)Src的Alpha的補(bǔ)值顯示(1-As)
             

              源碼下載:版權(quán)不歸本作者,源碼使用時(shí)請(qǐng)參照源文件的作者的要求使用http://www.aygfsteel.com/Files/onedaylover/AlphaCompositesApplication.rar
             
          posted on 2008-01-16 14:20 如果有一天de 閱讀(4533) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): richclient
          主站蜘蛛池模板: 百色市| 龙江县| 富阳市| 开江县| 库尔勒市| 黄大仙区| 阜平县| 广安市| 乌兰察布市| 岳阳市| 深州市| 田东县| 白城市| 金华市| 大方县| 沿河| 赤城县| 巴彦淖尔市| 定西市| 晋州市| 龙游县| 来安县| 格尔木市| 高淳县| 土默特左旗| 县级市| 治多县| 子长县| 芒康县| 怀集县| 霍州市| 东丰县| 买车| 英德市| 黄浦区| 西畴县| 焦作市| 阳泉市| 巴林左旗| 灌阳县| 阿克陶县|