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
'program story' 카테고리의 다른 글
단일 인수 (변환 지정자 없음)가있는 printf가 더 이상 사용되지 않는 이유는 무엇입니까? (0) | 2020.08.21 |
---|---|
자동 레이아웃을 사용하여 동적 테이블 뷰 섹션 헤더 높이를 얻을 수 있습니까? (0) | 2020.08.21 |
JavaScript window.location에 target =“_ blank”를 추가하는 방법은 무엇입니까? (0) | 2020.08.21 |
UIView와 CALayer의 차이점은 무엇입니까? (0) | 2020.08.21 |
CSS : img : hover에서 이미지 src 변경 (0) | 2020.08.21 |