3 回答

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊
這是我解決類似問(wèn)題的方法。
首先復(fù)制要用作圖像貼圖的圖像,然后為每個(gè)部分上色。不用說(shuō),每個(gè)部分都有不同的顏色:D。然后在布局中創(chuàng)建兩個(gè)ImageView。將第一個(gè)的背景設(shè)置為要顯示的圖像,將第二個(gè)的背景設(shè)置為其中的彩色。
然后將第二個(gè)ImageView的可見性設(shè)置為invisible。如果此時(shí)運(yùn)行該程序,則應(yīng)該看到要顯示的圖像。然后使用OnTouch偵聽器并獲取您觸摸的像素的顏色。顏色將與彩色圖像的顏色相對(duì)應(yīng)。
需要將以下getColour方法傳遞給touch事件的x和y坐標(biāo)。R.id.img2是不可見的圖像。
private int getColour( int x, int y)
{
ImageView img = (ImageView) findViewById(R.id.img2);
img.setDrawingCacheEnabled(true);
Bitmap hotspots=Bitmap.createBitmap(img.getDrawingCache());
img.setDrawingCacheEnabled(false);
return hotspots.getPixel(x, y);
}
希望這對(duì)您有所幫助:)。

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
我像Scotty所說(shuō)的那樣戴了口罩,但是遇到了更多的問(wèn)題?;旧?,getPixel返回的顏色與遮罩文件中的顏色略有不同。我要做的是在禁用縮放和使用全色選項(xiàng)的情況下將掩碼加載到內(nèi)存中:
BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
bitmapOptions.inTargetDensity = 1;
bitmapOptions.inDensity = 1;
bitmapOptions.inDither = false;
bitmapOptions.inScaled = false;
bitmapOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;
mask = BitmapFactory.decodeResource(appContext.getResources(), resMask, bitmapOptions);
然后我從縮放后的圖像中查找坐標(biāo),如下所示:
ImageView map = (ImageView) findViewById(R.id.image);
Drawable drawable = map.getDrawable();
Rect imageBounds = drawable.getBounds();
int scaledHeight = imageBounds.height();
int scaledWidth = imageBounds.width();
int scaledImageOffsetX = Math.round(event.getX()) - imageBounds.left;
int scaledImageOffsetY = Math.round(event.getY()) - imageBounds.top;
int origX = (scaledImageOffsetX * mask.getWidth() / scaledWidth);
int origY = (scaledImageOffsetY * mask.getHeight() / scaledHeight);
if(origX < 0) origX = 0;
if(origY < 0) origY = 0;
if(origX > mask.getWidth()) origX = mask.getWidth();
if(origY > mask.getHeight()) origY = mask.getHeight();
然后我應(yīng)用了mask.getPixel(origX,origY)。僅當(dāng)在ImageView中使用android:scaleType =“ fitXY”縮放圖像時(shí),此功能才有效,否則會(huì)關(guān)閉坐標(biāo)。

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
在區(qū)域上像素顏色的一致性方面仍然存在問(wèn)題。最終對(duì)我有用的是確保我使用帶有索引顏色的PNG圖像作為蒙版。在我的情況下,我使用了經(jīng)過(guò)網(wǎng)絡(luò)優(yōu)化的調(diào)色板(216種顏色),并確保我選擇的所有顏色都是該調(diào)色板中的值。進(jìn)行此更改后,我在整個(gè)區(qū)域中獲得了相同的顏色值。
- 3 回答
- 0 關(guān)注
- 624 瀏覽
添加回答
舉報(bào)