空の長方形をどのように描画するかなど。borderWidth = 3とborderColor = blackで、長方形内の部分にはコンテンツも色もありません。 Canvasで使用する関数
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)
}
}
次に、カスタムビューMyView.Callを使用して、JavaアクティビティをsetContentView()
に移動します。
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
のいずれかが機能するはずです。
ペイントのsetStyleをSTROKEとして設定するだけで問題ありません
Paint.setStyle(Paint.Style.STROKE);
これで手遅れかどうかはわかりませんが、これを解決する方法は、1つの大きな境界線を構成する4つの薄い長方形を描画することでした。 1つの長方形で境界線を描画すると、それらはすべて不透明であるため、元に戻すことができないようです。したがって、境界線の各エッジを個別に描画する必要があります。