j2me中,將螢幕上某一區域的顏色進行反轉

2021-04-25 10:41:56 字數 1062 閱讀 2417

如果自己使用低階ui的時候,比如說在canvas上使用button,則在ok鍵按下之後,就要自己來處理顏色的改變,比如說將顏色反轉。

graphics類中有drawrgb方法,用該方法可以將指定的區域設為特定的顏色資料。

這個方法的宣告如下:

void drawrgb(int rgbdata, int offset, int scanlength, int x, int y, int width, int height, boolean processalpha);

引數的意義分別為:

rgbdata: 有效的資料,即要寫到某個區域的顏色資料資訊

offset:有效資料在rgbdata中的起始位置

scanlength: 掃瞄行的寬度,即要寫的資料的寬度,這個值一般與後面的width相同

x: 表示區域開始的x座標

y: 表示區域開始的y座標

width:這個區域的寬度

height: 這個區域的高度

processalpha:是否使用alpha (這個我設為true或false沒看到有什麼影響,不知道是怎麼回事)

所以,將螢幕上原來的資料取下來之後,用0x00ffffff進行異或,就可以得到取反後的資料,然後將這個資料用drawrgb重新寫到螢幕上就可以實現反轉了。

但怎麼從螢幕上取得原來的資料,這個還有點麻煩

使用雙緩衝就是解決辦法之一,其實只是將圖畫在乙個全域性image上面,可以首先建立乙個image,然後用getgraphics方法來獲取graphics,然後在paint裡面全都畫到這個graphics上,最後在paint方法要返回的時候,一次性再用graphics的drawimage方法把那個全域性image畫出來。

這樣,在別處就可以使用那個全域性image所對應的graphics了。在image裡面有個getrgb方法,它的引數類似於graphics裡面的drawrgb,用這個getrgb來取得原來的資料,將顏色資料進行反轉,然後再寫回去,這樣就可以將某個區域的顏色進行反轉了。

下面是簡單的示例**:

btw: 用j2me寫普通的應用軟體介面真是麻煩……

J2ME 文字滾動

private int tipstringpos screen width 當前字串左邊的位置 private int tipstringspeed 2 字串移動速度 private static final int tipstr left 5 5 左邊消失繪製座標 private static f...

j2me記憶體優化

out momory 一陣天旋地轉記憶體又溢位了。在手機上這種痛苦經常都有,套一句俗話在手機上用記憶體必須勒緊褲腰帶。雖然現在pc記憶體上g都不奇怪,可是在手機上卻只能以k來記,可能某位同志會馬上跳出來說也有上m的,記住中國還不富大多數手機都是低端手機。寫手機程式讓我彷彿回到了dos時代 自我安慰一...

j2me學習總結

j2me隨著最後乙個遊戲的完成,可以畫上乙個小句號了。做了幾個東西,簡單說一下。環境winxp eclipse netbeans 手機 nokia5230,s60v5平台 1 冷笑話 這個就是入門,執行之後可以看一些冷笑話,還有謎語之類的,用的是j2me自帶的ui 2.貪食蛇。就是貪食蛇,用了遊戲的...