0
我創建了一個擴展LinerLayout的類,並在視圖中添加了很多元素,同時我還添加了圈爲 etc canvas.drawCircle(100,100,10),當我實現onTouchEvent時我不確定如何僅重繪該元素(圓形)。哪些參數在「Rect」中設置,以便我可以將其發送到無效(Rect)。android如何調用invalidate(Rect)
謝謝。
我創建了一個擴展LinerLayout的類,並在視圖中添加了很多元素,同時我還添加了圈爲 etc canvas.drawCircle(100,100,10),當我實現onTouchEvent時我不確定如何僅重繪該元素(圓形)。哪些參數在「Rect」中設置,以便我可以將其發送到無效(Rect)。android如何調用invalidate(Rect)
謝謝。
對於具體的例子,我覺得這個代碼示例你想要做什麼。我將你的座標移動到變量(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);
我加在各方面的額外像素只是重疊的圓位,以確保整個區域無效。根據我的經驗,看起來您可以包含負值或超過畫布尺寸的值。
好吧,這很有用,非常感謝,現在我有更多的問題。 1.在那個圈子裏,我用canvas.drawText創建了文本女巫,所以這個重繪和那個文本。 2.當創建圖像與canvas.drawBitmap(位圖100,100,油漆)如何定義圖像的寬度和高度怎麼辦它位圖對象或我可以在canvas.drawBitmap做 感謝 – Kec
數目:1 )如果您在包含LinearLayout中執行invalidate,則屬於invalidate矩形內的文本將被重新繪製。 2)有幾個版本的canvas.drawBitmap。您提到的版本使用位圖對象的寬度/高度。如果您希望Canvas在繪製時將位圖縮放到不同的大小,請嘗試使用public void drawBitmap(位圖位圖,Rect src,Rect dst,Paint paint)。 – mportuesisf
謝謝,我會嘗試這種方式 – Kec