簡體   English   中英

位圖密度導致問題

[英]Bitmap density causing problems

我正在做自己的像素計算,以便在屏幕上繪制圖像,並且具有精靈位圖(一個文件中包含4x2圖像)。 每個圖像為100x100,整個文件為400x200。 使用以下方法,我的繪圖未拉到位圖的正確部分,並且在scren上的放置不太正確:

public void drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint)

由於:API級別1

繪制指定的位圖,自動縮放/平移以填充目標矩形。 如果源矩形不為null,則它指定要繪制的位圖的子集。

注意:如果繪畫包含的maskfilter生成的蒙版超出了位圖的原始寬度/高度(例如BlurMaskFilter),則將繪制位圖,就好像它處於具有CLAMP模式的Shader一樣。 因此,原始寬度/高度之外的顏色將被復制為邊緣顏色。

此功能忽略與位圖關聯的密度。 這是因為源和目標矩形坐標空間處於各自的密度中,因此必須已經應用了適當的縮放因子。

參數

位圖>要繪制的位圖

src>可能為null。 要繪制的位圖的子集

dst>位圖將被縮放/轉換以適合的矩形

paint>可能為空。 用於繪制位圖的繪畫

Rect source = new Rect();
    source.left = (this.currentFrame % 4) * 100;
    source.right = source.left + 100;
    source.top = (this.currentFrame / 4) * 100;
    source.bottom = source.top + 100;

    Rect dest = new Rect();
    dest.top = (int) top;
    dest.left = (int) left;
    dest.right = dest.left + 100;
    dest.bottom = dest.top + 100;

    // draw current frame onto canvas
    //canvas.drawBitmap(pics[this.currentFrame], left, top, painter);
    canvas.drawBitmap(pics[0], source, dest, painter);

文檔明確指出密度被忽略,但是為什么我的圖像被縮放?

根據雷納德

您到底如何加載pics[0] 您是否嘗試過getResources().openRawResource(imageId)

這解決了我的問題。

暫無
暫無

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

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