@Override public void onCustomDraw(RelativeCanvas canvas_, BasicRelativeView view_) { if (_LayoutLabelMode != LAYOUTLABEL_NOTHING) { Paint p = new Paint(); // _LayoutLabel.drawText(canvas); p.setColor(_LayoutLineColor); switch (_LayoutLabelMode) { case LAYOUTLABEL_LINE: if (_LayoutLabelDrawUnder) { canvas_.drawLine( _LayoutLabel.width() + 5, height() - (_LayoutLabel.height() / 2f), width() - 5, height() - (_LayoutLabel.height() / 2f), 1, p); } else { canvas_.drawLine( _LayoutLabel.width() + 5, _LayoutLabel.height() / 2f, width() - 5, _LayoutLabel.height() / 2f, 1, p); } break; case LAYOUTLABEL_SQUARE: if (_LayoutLabelDrawUnder) { canvas_.drawLine(5, 5, width() - 5, 5, 1, p); canvas_.drawLine(5, 5, 5, height() - (_LayoutLabel.height() / 2f), 1, p); canvas_.drawLine( width() - 5, 5, width() - 5, height() - (_LayoutLabel.height() / 2f), 1, p); canvas_.drawLine( _LayoutLabel.width() + 5, height() - (_LayoutLabel.height() / 2f), width() - 5, height() - (_LayoutLabel.height() / 2f), 1, p); } else { canvas_.drawLine( _LayoutLabel.width() + 5, _LayoutLabel.height() / 2f, width() - 5, _LayoutLabel.height() / 2f, 1, p); canvas_.drawLine(5, _LayoutLabel.height() / 2f, 5, height() - 5, 1, p); canvas_.drawLine( width() - 5, _LayoutLabel.height() / 2f, width() - 5, height() - 5, 1, p); canvas_.drawLine(5, height() - 5, width() - 5, height() - 5, 1, p); } break; } } }
public void drawOnBitmap(DrawListener drawRoutine_) { if (drawRoutine_ != null && _Source != null) { RelativeViewAbstract nullView = new RelativeViewAbstract("nullView"); nullView.setWH(_BitmapRect.width(), _BitmapRect.height()); Canvas cBitmap = new Canvas(_Source); RelativeCanvas rCanvas = new RelativeCanvas(cBitmap, new Rect(0, 0, width(), height())); drawRoutine_.onCustomDraw(rCanvas, nullView); cBitmap = null; rCanvas.destroy(); rCanvas = null; nullView.destroy(); nullView = null; } }