黑莓

2011-07-31 242 views
0
調整位圖的寬度和高度在MapField可

我在下面給出的代碼畫圓周圍的位置點在MapField可類似:}}黑莓

public void drawCircleMap(int [] radius) 
{ 
    int i = 0; 
    Graphics graphics = null; 
    int x2,y2; 
    bmparr = new Bitmap[radius.length]; 
    for(int j=0;j<radius.length;j++) 
    { 
       XYPoint fieldOut = new XYPoint(); 
       convertWorldToField(mPoints[1], fieldOut); 
       x2 = fieldOut.x; 
       y2 = fieldOut.y; 
       bmparr[i] = new Bitmap(getWidth(), getHeight()); 
       bmparr[i].createAlpha(Bitmap.ALPHA_BITDEPTH_8BPP); 
       graphics = Graphics.create(bmparr[i]); 
       graphics.setColor(Color.BLUE); 
       graphics.drawEllipse(x2, y2, x2+radius[j], y2, x2,y2+radius[j], 0, 360); 
       graphics.fillEllipse(x2, y2, x2+radius[j], y2, x2,y2+radius[j], 0, 360); 
       i++; 
    } 

protected void paint(Graphics graphics) { 
    super.paint(graphics); 

    for(int i =0 ;i < bmparr.length;i++) 
    { 
     graphics.setGlobalAlpha(100); 
     graphics.drawBitmap(0, 0, bmparr[i].getWidth(), bmparr[i].getHeight(), bmparr[i], 0, 0); 
    } 

我想繪製4個圓圈,現在當我繪製更多圓圈時,地圖似乎淡出,有人可以告訴我我該如何解決這個問題?

+0

你真的應該添加您的解決方案作爲一個問題的答案,並接受它。這樣,搜索相似問題的人就能一眼就能看出問題的解決方案。 –

回答

1

我已經畫一個透明背景爲每一個位圖解決了這個問題:

bmparr = new Bitmap[radius.length]; 
for(int j=0;j<radius.length;j++) 
{ 
    XYPoint fieldOut = new XYPoint(); 
    convertWorldToField(mPoints[1], fieldOut); 
    x2 = fieldOut.x; 
    y2 = fieldOut.y; 
    bmparr[i] = new Bitmap(getWidth(), getHeight()); 
    bmparr[i].createAlpha(Bitmap.ALPHA_BITDEPTH_8BPP); 
    int[] argb = new int[getWidth() * getHeight()]; 
    bmparr[i].getARGB(argb, 0, getWidth(), 0, 0, getWidth(), getHeight()); 
    for(int k = 0; k < argb.length; k++) 
    { 
     argb[k] = 0x00000000; 
    } 
    bmparr[i].setARGB(argb, 0, getWidth(), 0, 0, getWidth(), getHeight()); 
    graphics = Graphics.create(bmparr[i]); 
    graphics.setColor(Color.BLUE); 
    graphics.drawEllipse(x2, y2, x2+radius[j], y2, x2,y2+radius[j], 0, 360); 
    graphics.fillEllipse(x2, y2, x2+radius[j], y2, x2,y2+radius[j], 0, 360); 
    i++; 
} 
0

我相信你的問題是與alpha混合。您正在繪製每個圖像,一個在另一個之上,大約有50%的alpha。因此,第一個半徑「覆蓋」現有像素強度的一半。然後下一個半徑覆蓋剩餘強度的一半,即原始強度的75%。等等......每次你畫一幅圖像時,它都會覆蓋越來越多的原始強度。

如果您希望所有的圈子都具有相同的強度,則需要重新考慮您的方法。例如,考慮在地圖頂部繪製一個位圖之前,繪製所有的圓圈。或者考慮讓每個較大的圈子都留下一個100%透明的「小洞」,小圈子就是這樣。

+0

非常感謝您的建議,我解決了我的問題。 – Suppi