簡體   English   中英

在Android / Java中使用畫布在圖像上繪制

[英]Draw with a Canvas over an Image in Android/Java

我嘗試在Canvas上繪制,背景是Android中加載的圖片。 沒有backgroundimage就可以正常工作:

background = (ImageView)view.findViewById(R.id.Background);
Bitmap bitmap = Bitmap.createBitmap(canvasSize,canvasSize,Bitmap.Config.ARGB_8888);
canvas = new Canvas(bitmap);
background.setImageBitmap(bitmap);

我將畫布傳遞給另一個類並在上面繪畫。 很好

但是當我這樣做時:

background = (ImageView)view.findViewById(R.id.Background);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); //Just to test

canvas = new Canvas(bitmap); 
//or this
canvas = new Canvas(bitmap.copy(Bitmap.Config.ARGB_8888, true));

background.setImageBitmap(bitmap);

它不會覆蓋圖像,所以您看不到重點。 這是我使用此畫布繪制的另一個類的代碼:

canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
canvas.drawCircle( (float)sObject.getSideGforce()*mult+add, 
(float)sObject.getFrontRearGforce()*mult+add, 15*V.LOGICAL_DENSITY, dot);                                                                                                                          

我的目標是創建一個具有自定義尺寸的畫布,該畫布具有可作為背景繪制背景的圖像。 它是Gforce顯示器,因此圖像將是帶有數字的一些圓圈,並且畫布將在其上繪制一個點,這樣您就可以看到要拉動的G數。 就像我已經說過的那樣,在沒有背景的情況下它可以完美運行。 而且,我不想每次重新定位點時都重新繪制背景。 因此背景應該是靜態的,畫布上的點應該是動態的(在100hz處)。 提前致謝。

解決方案:可以使用此代碼。

view.setBackgroundResource(R.drawable.ic_launcher);

我只需要設置我的視圖的背景。 它將圖像拉伸到我片段的大小,但這沒關系。

BitmapFactory.decodeResource()創建不可變的Bitmap,因此有不能更改它的原因。

您需要創建一個位圖作為工作代碼,然后使用canvas.drawBitmap()在后台繪制所需的位圖。 然后畫你想要的東西。

編輯:或使用setBackground()作為背景,僅在畫布上繪制點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM