1
私は、円を半円にアンドロイドキャンバスでカットしようとしています。円はBitmapクラスを使用してロードされます。ここでAndroidビットマップ - サークルを半円にクロップする
は例です:
私はすべてのソリューション、座標を使用しますが、無駄にビットマップをトリミングすることができます、特にものを探してきました。
すべてのヘルプは高く評価され、感謝を...
私は、円を半円にアンドロイドキャンバスでカットしようとしています。円はBitmapクラスを使用してロードされます。ここでAndroidビットマップ - サークルを半円にクロップする
は例です:
私はすべてのソリューション、座標を使用しますが、無駄にビットマップをトリミングすることができます、特にものを探してきました。
すべてのヘルプは高く評価され、感謝を...
前に、私は前に、同じ課題を持っていたし、私は簡単な方法でそれを解決し、主要なアイデアは簡単です! ビットマップマスクを使用し、最大整数値(0xFFFFFFFF)で保存するピクセル(この場合は円)を塗りつぶします。ビットのAND
を使用して結果カラーを得ることができます。マスクのその他のピクセルBitmap
は
public void doIt(View view) {
ImageView imageView = (ImageView) findViewById(R.id.iv);
Bitmap src = Bitmap.createBitmap(500, 500, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(src);
canvas.drawColor(Color.BLUE);//fill src bitmap with blue color
imageView.setImageBitmap(applyPieMask(src, -90, 60));
}
...私たちが行く
public Bitmap applyPieMask(Bitmap src, float startAngle, float sweepAngle) {
int width = src.getWidth();
int height = src.getHeight();
//create bitmap mask with the same dimension of the src bitmap
Bitmap mask = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(mask);
canvas.drawColor(0x00000000);//fill mask bitmap with transparent black!
//init mask paint
Paint maskPaint = new Paint();
maskPaint.setColor(0xFFFFFFFF);//pick highest value for bitwise AND operation
maskPaint.setAntiAlias(true);
//choose entire bitmap as a rect
RectF rect = new RectF(0, 0, width, height);
canvas.drawArc(rect, startAngle, sweepAngle, true, maskPaint);//mask the pie
Bitmap result = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
//combine src color and mask to gain the result color
int color = mask.getPixel(i, j) & src.getPixel(i, j);
result.setPixel(i, j, color);
}
}
return result;
}
そして、ここで:ないあなたがマスクで行われている透明のブラックカラー(0x00000000の)、あること、結果Bitmap
を作成し、下記の方法として、画素を埋めます
は、あなたがそれ役に立つ
ありがとう見つけます。とても役に立ちました – Jason