2012-04-03 72 views
2

我正在做我自己的像素計算在屏幕上繪圖,並有一個精靈位圖(一個文件中的4x2圖像)。每張圖片都是100x100,整個文件是400x200。使用下面的方法,我的畫不拉位圖的右側部分,並在scren佈局是不完全正確:位圖密度導致問題

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

自:API等級1

繪製指定的位圖,自動縮放/翻譯以填充目標矩形的 。如果源矩形不爲空,則其指定要繪製的位圖的子集。

注意:如果該塗料含有其生成 延伸超出該位圖的原始寬度/高度(例如 BlurMaskFilter)的掩模的maskfilter,則位圖將被吸引,好像它是在一個 着色器與CLAMP模式。因此,原始的寬度/高度之外的顏色將是邊緣顏色的複製。

該函數忽略與位圖相關的密度。這是 ,因爲源矩形和目標矩形座標空間的密度均爲 ,所以必須已經應用適當的 比例因子。

參數

位圖>將位圖繪製

來源>可能爲null。位圖的子集要繪製

DST>,該位將被縮小/轉換爲適合

漆的長方形>可能爲null。用油漆繪製位圖

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); 

的文件明確地說密度被忽略,但爲什麼我的形象被縮放?

+0

你究竟是如何加載圖片[0]?你有沒有嘗試getResources()。openRawResource(imageId)? – Renard 2012-04-03 08:37:13

+0

此刻我還沒有收到代碼,稍後會進行檢查。感謝您的建議。 – cjk 2012-04-03 12:40:17

+0

@Renard - 這樣做的竅門,雖然現在我重新介紹Android只是試圖幫助我處理不同的密度。儘管如此,它讓精靈變得非常痛苦...... – cjk 2012-04-03 20:58:40

回答

1

Renard

到底是如何在加載pics[0]?你有沒有試過getResources().openRawResource(imageId)

這解決了我的問題。