Я спрашиваю о том, как применить алгоритм Xiaolin, чтобы иметь гладкий угол для изображения в Android. Я написал алгоритм, который перебирает пиксели и определяет, следует ли удалить этот пиксель или нет, чтобы угол для изображения также удалял пиксель, делая он прозрачный 255 для альфа-значения, но угол не гладкий, и я читаю об алгоритме Xiaolin для плавной линии, но, поскольку я нахожусь на среднем уровне программиста Java, я не знаю, как применить этот алгоритм >>> может ли кто-нибудь помочь мне о том, как применить этот алгоритм или предложить другой алгоритм и как его использовать, это мой код
int radius = Integer.parseInt(((EditText)MainActivity.this.findViewById(R.id.editTextRadius)).getText().toString());
int xCenter ;
int yCenter;
Bitmap mutableBitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.h);
Bitmap drawaBitmap = mutableBitmap.copy(Bitmap.Config.ARGB_4444, true);
for (int i = 0; i < radius; i++) {
xCenter = radius;
yCenter = radius;
for (int j = 0; j < radius; j++) {
if (Math.pow(i - xCenter , 2) + Math.pow(j - yCenter , 2) > Math.pow(radius, 2) ) {
drawaBitmap.setPixel(i, j,
Color.argb(255, 255, 255, 255));
}
}
xCenter = radius;
yCenter = drawaBitmap.getHeight()-radius;
for (int j = drawaBitmap.getHeight()-1; j > drawaBitmap.getHeight()-radius; j--) {
if (Math.pow(i - xCenter , 2) + Math.pow(j - yCenter , 2) > Math.pow(radius, 2) ) {
drawaBitmap.setPixel(i, j,
Color.argb(255, 255, 255, 255));
}
}
}
for (int i = drawaBitmap.getWidth()-1; i > drawaBitmap.getWidth()-radius; i--) {
xCenter = drawaBitmap.getWidth() - radius;
yCenter = radius;
for (int j = 0; j < radius; j++) {
if (Math.pow(i - xCenter , 2) + Math.pow(j - yCenter , 2) > Math.pow(radius, 2)) {
drawaBitmap.setPixel(i, j,
Color.argb(255, 255, 255, 255));
}
}
xCenter = drawaBitmap.getWidth()-radius;
yCenter = drawaBitmap.getHeight()-radius;
for (int j = drawaBitmap.getHeight()-1; j > drawaBitmap.getHeight()-radius; j--) {
if (Math.pow(i - xCenter , 2) + Math.pow(j - yCenter , 2) > Math.pow(radius, 2) ) {
drawaBitmap.setPixel(i, j,
Color.argb(255, 255, 255, 255));
}
}
}
((ImageView)this.findViewById(R.id.image)).setImageBitmap(drawaBitmap);
заранее спасибо
by making it transparent 255 for alpha value
: 255 сделает пиксель непрозрачным, а не прозрачным. Вместо этого используйте 0. - person Vikram   schedule 09.09.2013also 255 is transparent 0 is opaque try it :)
Неправда: Ссылка - person Vikram   schedule 09.09.2013((ImageView)this.findViewById(R.id.image)).setBackground(getResources().getColor(android.R.color.transparent));
перед((ImageView)this.findViewById(R.id.image)).setImageBitmap(drawaBitmap);
. - person Vikram   schedule 09.09.2013Color.argb(255, 255, 255, 255)
: Первый аргумент: альфа — это 255 илиFF
, второй аргумент: красный — это 255 илиFF
, третий аргумент: зеленый — это 255 илиFF
, четвертый аргумент: синий — это 255 илиFF
. Это переводится как:0x FF FF FF FF
==› непрозрачныйwhite
. Я думаю, что то, что вы называетеtransparent
, на самом делеwhite
пикселей. Попробуйте установить фон макета на черный. Вы увидите, что я имею в виду. Вы пытались сделать то, что я предложил в моем предыдущем комментарии? Попробуйте сColor.argb(0, 255, 255, 255));
. - person Vikram   schedule 09.09.2013please be sure we work on Bitmap not Drawable
: Итак, я проверил ваш код с моими предложениями, и он работает. Написал ответ ниже. Надеюсь, поможет. - person Vikram   schedule 09.09.2013