program story

Android 캔버스 그리기 직사각형

inputbox 2020. 8. 21. 07:41
반응형

Android 캔버스 그리기 직사각형


등을 사용하여 빈 사각형을 그리는 방법 borderWidth = 3 및 borderColor = black 및 사각형 내의 부분에는 내용이나 색상이 없습니다. 캔버스에서 사용할 기능

void drawRect(float left, float top, float right, float bottom, Paint paint)

void drawRect(RectF rect, Paint paint)

void drawRect(Rect r, Paint paint)

감사.

나는이 예를 시도한다

Paint myPaint = new Paint();
myPaint.setColor(Color.rgb(0, 0, 0));
myPaint.setStrokeWidth(10);
c.drawRect(100, 100, 200, 200, myPaint);

사각형을 그리고 검은 색으로 채우지 만이 이미지와 같이 "프레임"을 원합니다.

여기에 이미지 설명 입력


시도 paint.setStyle(Paint.Style.STROKE)하시겠습니까?


" 사각형 내의 부분에 내용 색상이 없음 "은 사각형 내에 다른 채우기를 원한다는 것을 의미합니다. 사각형 안에 사각형을 그린 다음 획 너비 0과 원하는 채우기 색상을 사용해야합니다.

예를 들면 :

DrawView.java

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;

public class DrawView extends View {
    Paint paint = new Paint();

    public DrawView(Context context) {
        super(context);            
    }

    @Override
    public void onDraw(Canvas canvas) {
        paint.setColor(Color.BLACK);
        paint.setStrokeWidth(3);
        canvas.drawRect(30, 30, 80, 80, paint);
        paint.setStrokeWidth(0);
        paint.setColor(Color.CYAN);
        canvas.drawRect(33, 60, 77, 77, paint );
        paint.setColor(Color.YELLOW);
        canvas.drawRect(33, 33, 77, 60, paint );

    }

}

시작하는 활동 :

StartDraw.java

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;

public class StartDraw extends Activity {
    DrawView drawView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        drawView = new DrawView(this);
        drawView.setBackgroundColor(Color.WHITE);
        setContentView(drawView);

    }
}

...이 방법으로 나옵니다.

여기에 이미지 설명 입력


//white background
canvas.drawRGB(255, 255, 255);
//border's properties
paint.setColor(Color.BLACK);
paint.setStrokeWidth(0);        
paint.setStyle(Paint.Style.STROKE);         
canvas.drawRect(100, 100, 200, 200, paint);

새 클래스를 만듭니다 MyView, Which extends View. onDraw(Canvas canvas)사각형을 그리는 메서드를 재정의합니다 Canvas.

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.AttributeSet;
import android.view.View;

public class MyView extends View {

 Paint paint;
 Path path;

 public MyView(Context context) {
  super(context);
  init();
 }

 public MyView(Context context, AttributeSet attrs) {
  super(context, attrs);
  init();
 }

 public MyView(Context context, AttributeSet attrs, int defStyle) {
  super(context, attrs, defStyle);
  init();
 }

 private void init(){
  paint = new Paint();
  paint.setColor(Color.BLUE);
  paint.setStrokeWidth(10);
  paint.setStyle(Paint.Style.STROKE);

 }

 @Override
 protected void onDraw(Canvas canvas) {
  // TODO Auto-generated method stub
  super.onDraw(canvas);

  canvas.drawRect(30, 50, 200, 350, paint);
  canvas.drawRect(100, 100, 300, 400, paint);
  //drawRect(left, top, right, bottom, paint)

 }

}

그런 다음 setContentView()사용자 정의보기 인 MyView 사용 하여 Java 활동을 이동하십시오 .

    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(new MyView(this));
  }

자세한 내용은 여기를 참조하세요.

http://developer.android.com/reference/android/graphics/Canvas.html


paint.setStrokeWidth(3);

paint.setColor(BLACK);

둘 중 하나 drawRect가 작동합니다.


이것이 너무 늦었는지 모르겠지만, 제가 해결 한 방법은 하나의 큰 테두리를 구성하는 네 개의 얇은 직사각형을 그리는 것이 었습니다. 하나의 사각형으로 테두리를 그리는 것은 모두 불투명하기 때문에 취소 할 수없는 것처럼 보이므로 테두리의 각 가장자리를 개별적으로 그려야합니다.


코드는 STROKE로 페인트의 setStyle 만 괜찮습니다.

paint.setStyle(Paint.Style.STROKE);

참고 URL : https://stackoverflow.com/questions/7344497/android-canvas-draw-rectangle

반응형