2011-08-17 70 views
0

我創建了一個擴展LinerLayout的類,並在視圖中添加了很多元素,同時我還添加了圈爲 etc canvas.drawCircle(100,100,10),當我實現onTouchEvent時我不確定如何僅重繪該元素(圓形)。哪些參數在「Rect」中設置,以便我可以將其發送到無效(Rect)。android如何調用invalidate(Rect)

謝謝。

回答

2

對於具體的例子,我覺得這個代碼示例你想要做什麼。我將你的座標移動到變量(cx,cy,r)中,只是爲了說清楚。根據你所提到的,我想你會在你的LinearLayout子類中調用它。

int cx = 100; 
    int cy = 100; 
    int r = 10; 

    canvas.DrawCircle(cx, cy, r); 

    int l = cx - r - 1; 
    int t = cy - r - 1; 
    int r = cx + r + 1; 
    int b = cy + r + 1; 

    Rect bounds = new Rect(l, t, r, b); 
    invalidate(bounds); 

我加在各方面的額外像素只是重疊的圓位,以確保整個區域無效。根據我的經驗,看起來您可以包含負值或超過畫布尺寸的值。

+0

好吧,這很有用,非常感謝,現在我有更多的問題。 1.在那個圈子裏,我用canvas.drawText創建了文本女巫,所以這個重繪和那個文本。 2.當創建圖像與canvas.drawBitmap(位圖100,100,油漆)如何定義圖像的寬度和高度怎麼辦它位圖對象或我可以在canvas.drawBitmap做 感謝 – Kec

+0

數目:1 )如果您在包含LinearLayout中執行invalidate,則屬於invalidate矩形內的文本將被重新繪製。 2)有幾個版本的canvas.drawBitmap。您提到的版本使用位圖對象的寬度/高度。如果您希望Canvas在繪製時將位圖縮放到不同的大小,請嘗試使用public void drawBitmap(位圖位圖,Rect src,Rect dst,Paint paint)。 – mportuesisf

+0

謝謝,我會嘗試這種方式 – Kec

相關問題