How to draw circle by canvas in Android?

前端 未结 8 1338
广开言路
广开言路 2020-11-27 05:14

I want to draw circle by canvas. Here is my code:

[MyActivity.java]:

public class MyActivity extends Activity 
{
 public void onCreate(Bundle savedInst         


        
8条回答
  •  轮回少年
    2020-11-27 05:28

    Try this

    The entire code for drawing a circle or download project source code and test it on your android studio. Draw circle on canvas programmatically.

    import android.graphics.Bitmap;
        import android.graphics.Canvas;
        import android.graphics.Color;
        import android.graphics.Paint;
        import android.graphics.Path;
        import android.graphics.Point;
        import android.graphics.PorterDuff;
        import android.graphics.PorterDuffXfermode;
        import android.graphics.Rect;
        import android.graphics.RectF;
        import android.widget.ImageView;
    
    
            public class Shape {
    
                private Bitmap bmp;
                private ImageView img;
                public Shape(Bitmap bmp, ImageView img) {
    
                    this.bmp=bmp;
                    this.img=img;
                    onDraw();
                }
    
                private void onDraw(){
                     Canvas canvas=new Canvas();
                     if (bmp.getWidth() == 0 || bmp.getHeight() == 0) {
                         return;
                    }
    
                    int w = bmp.getWidth(), h = bmp.getHeight();
    
                    Bitmap roundBitmap = getRoundedCroppedBitmap(bmp, w);
    
                    img.setImageBitmap(roundBitmap);
    
                }
    
                public static Bitmap getRoundedCroppedBitmap(Bitmap bitmap, int radius) {
                    Bitmap finalBitmap;
                    if (bitmap.getWidth() != radius || bitmap.getHeight() != radius)
                        finalBitmap = Bitmap.createScaledBitmap(bitmap, radius, radius,
                                false);
                    else
                        finalBitmap = bitmap;
                    Bitmap output = Bitmap.createBitmap(finalBitmap.getWidth(),
                            finalBitmap.getHeight(), Bitmap.Config.ARGB_8888);
                    Canvas canvas = new Canvas(output);
    
                    final Paint paint = new Paint();
                    final Rect rect = new Rect(0, 0, finalBitmap.getWidth(),
                            finalBitmap.getHeight());
    
                    paint.setAntiAlias(true);
                    paint.setFilterBitmap(true);
                    paint.setDither(true);
                    canvas.drawARGB(0, 0, 0, 0);
                    paint.setColor(Color.parseColor("#BAB399"));
                    canvas.drawCircle(finalBitmap.getWidth() / 2 + 0.7f, finalBitmap.getHeight() / 2 + 0.7f, finalBitmap.getWidth() / 2 + 0.1f, paint);
                    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
                    canvas.drawBitmap(finalBitmap, rect, rect, paint);
    
                    return output;
                }
    

提交回复
热议问题