테두리, 테두리 너비, 색상, 반지름을 사용자가 설정할 수 있습니다. 그래서 저는 그것을 위해 직사각형을 그려 봅니다. drawRoundRect를 사용하여 그리면 구석의 선이 부드럽 지 않고 다른 부분보다 두껍습니다. 나는 그것을 고치는 법을 모른다. 제발 좀 가르쳐주세요. 그것을 할 다른 방법이 있습니까? 그것을 그리려면 코드를 사용해야합니다.테두리를 더 부드럽게 만드는 방법
대단히 감사합니다. 첨부 코드 : rect의 빨간색 모서리. 과거 코드 :
public class MPCTextView extends TextView {
// private Context context;
private final static String TAG = "MPCTextView";
public final static int DEFAULT_BACKGROUND_COLOR = Color
.parseColor("#28FF28");
public final static int DEFAULT_BORDER_COLOR = Color.parseColor("#FF0000");
public int mBoderWidth = 2;
public int mBoderColor;
public int mBoderRadius = 20;
public int mbackgroundColor;
public boolean isHaveBorder = true;
public boolean isHaveBackground = true;
RectF mRectF = new RectF();
Rect mRec = new Rect();
Paint mPaint = new Paint();
public MPCTextView(Context context) {
super(context);
// this.context = context;
}
@Override
protected void onDraw(Canvas canvas) {
// try to add a boder for this view.
canvas.getClipBounds(mRec);
// draw background
// canvas.drawColor(mbackgroundColor);
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(DEFAULT_BACKGROUND_COLOR);
if (mBoderRadius > 0) {
mRectF.set(mRec);
canvas.drawRoundRect(mRectF, mBoderRadius, mBoderRadius, mPaint);
} else {
canvas.drawRect(mRec, mPaint);
}
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(mBoderWidth);
mPaint.setColor(DEFAULT_BORDER_COLOR);
mPaint.setAntiAlias(true);
if (mBoderRadius > 0) {
mRectF.set(mRec);
canvas.drawRoundRect(mRectF, mBoderRadius, mBoderRadius, mPaint);
} else {
canvas.drawRect(mRec, mPaint);
}
super.onDraw(canvas);
}
감사합니다 당신이 아주 많이 : 여기
은 둥근 RECT 캔버스 내부에 완전히 그릴 만들 수있는 코드입니다. 사실, 나는 그것을 코드에 추가했다. 그러나 그것은 나를 위해 충분하지 않습니다. 다른 아이디어있어? – mmm2006mPaint.setDither (true); – Blackbelt
효과가 없습니다. : 다른 솔루션? – mmm2006