android - Rectangle is not drawn at its original coordinates -
i facing problem while creating customview draw rectangle , can re-size corners.
following code.
public class customview extends view { canvas canvas; private context mcontext; private rect rectobj; private paint rectpaint; private matrix transform; public customview(context context) { super(context); mcontext = context; initview(); } public customview(context context, attributeset attrs) { super(context, attrs); mcontext = context; initview(); } public customview(context context, attributeset attrs, int defstyle) { super(context, attrs, defstyle); } public void initview() { rectpaint = new paint(); rectpaint.setcolor(color.parsecolor("#55000000")); setfocusable(true); // necessary getting touch events canvas = new canvas(); // setting start point balls rectobj = new rect(100, 100, 200, 200); // create matrix rotation transform = new matrix(); } @override public void ondraw(canvas canvas) { // easy way apply same transformation (e.g. // rotation) // complete canvas. canvas.setmatrix(transform); // canvas being rotated, can draw // our elements (rect , point) canvas.drawrect(rectobj, rectpaint); } } when run program, following output come.

as display in image, "rectangle"'s top-left 100,100 when touch on "left-top corner of rectangle" on screen, x-y 150,76 or not match original drawing.
i have use canvas.setmatrix(transform) rotate rectangle in next phase.
whats going wrong in code?
in method ondraw(canvas canvas) 1 thing should calling method super.ondraw(cavas), after instead of doing 'canvas.setmatrix(transform);' should 'canvas.concat(transform);' because canvas has initial matrix values saved. also, if need rotate or translate rect, can rotate , translate canvas doing canvas.rotate(degree) example.
Comments
Post a Comment