簡體   English   中英

位圖+畫布密度依賴

[英]bitmap + canvas density dependency

我只是無法弄清楚如何繪制位圖(在畫布的幫助下),以便結果不依賴於設備密度。

這是制作繪圖的代碼:

ImageView iv = (ImageView)findViewById(R.id.container);
Bitmap result = BitmapFactory.decodeResource(getResources(), R.drawable.big_picture).copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(result);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.small_picture), actualX, actualY, null);
iv.setImageBitmap(result);

我在Bitmap result加載了一個big_picture,我希望在指定的位置繪制一個small_picture。 如果我設置了actualX和actualY,那么在具有相同密度的設備上就可以了。 然而,具有不同密度的設備“縮放”畫布。

有趣的是,只有small_picture被“縮放”並離開了屏幕,但它背后的pig_picture恰好適合任何密度屏幕上的屏幕。 這是為什么? 我怎樣才能獨立地在big_picture densitiy上繪制small_picture? 謝謝!

調試Bitmap后我發現了什么情況。 除非您將圖像drawable-nodpi ,否則圖像將重新調整大小以匹配標稱設備密度。 (這些是120,160,240,320)如果您將圖像“加載” BitmapCanvas ,則無論原始圖像如何,它們都將具有這些密度之一。

因此,一種解決方案是將圖像drawable-nodpi 之后,他們在所有密度上的行為都相同。

另一種解決方案是基於上述密度的比率乘以坐標。

...或者您可以為所有限定符制作自定義圖像和坐標。

暫無
暫無

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

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