programacion - Rectángulo de dibujo de lienzo de Android
manual de android en pdf (6)
Crea una nueva clase MyView, Which extends View
. Reemplace el onDraw(Canvas canvas)
para dibujar un rectángulo en 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)
}
}
Luego, mueva su actividad de Java a setContentView()
usando nuestra vista personalizada, MyView. Llame de esta manera.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyView(this));
}
Para más detalles, puede visitar aquí
http://developer.android.com/reference/android/graphics/Canvas.html
cómo dibujar un rectángulo vacío con etc. borderWidth = 3 y borderColor = black y parte dentro del rectángulo no tienen contenido o color. Qué función utilizar en Canvas para usar
void drawRect(float left, float top, float right, float bottom, Paint paint)
void drawRect(RectF rect, Paint paint)
void drawRect(Rect r, Paint paint)
Gracias.
Intento este ejemplo
Paint myPaint = new Paint();
myPaint.setColor(Color.rgb(0, 0, 0));
myPaint.setStrokeWidth(10);
c.drawRect(100, 100, 200, 200, myPaint);
Dibuja un rectángulo y lo llena de color negro, pero solo quiero un "marco" como esta imagen:
No sé si esto es demasiado tarde, pero la forma en que resolví esto fue dibujar cuatro rectángulos delgados que juntos formaban un borde grande. Dibujar el borde con un rectángulo parece ser imposible de deshacer, ya que todos son opacos, por lo que debe dibujar cada borde del borde por separado.
Pruebe paint.setStyle(Paint.Style.STROKE)
?
Suponiendo que "una parte dentro de un rectángulo no tenga un color de contenido " significa que quiere diferentes rellenos dentro del rectángulo; necesita dibujar un rectángulo dentro de su rectángulo, luego con un ancho de trazo 0 y los colores de relleno deseados.
Por ejemplo:
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 );
}
}
La actividad para iniciarlo:
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);
}
}
... saldrá de esta manera:
//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);
paint.setStrokeWidth(3);
paint.setColor(BLACK);
y cualquiera de tus drawRect
debería funcionar.