Wednesday, 15 June 2011

canvas - How to draw or write a text like MS-Paint in android using onTouch Event? -



canvas - How to draw or write a text like MS-Paint in android using onTouch Event? -

using pencil hi all, have created panel collection of different colors, pencil, eraser , different shapes similar ms-paint. able draw or write on screen using touch event method. when draw on screen (when touch screen), motionevent.action_down method calling. works fine. when release finger screen, motionevent.action_up method calling , works fine.

so, problem is, ms-paint couldnt able see drew or wrote before releasing finger on screen. example, can refer video link- using pencil. user can see when dragged shapes or trying draw pencil. also, in link user draws using pencil , visible without releasing finger on screen.

but, when draw on screen, 1 time released finger appears.

what need is, when user touch screen if he/she moves finger on screen, user must able see trying draw or write on screen.

for illustration : if seek write word "apple" on screen , trying set "a" . when write letter "a", invisible unless take finger screen. 1 time if released finger screen after drew letter"a" text or image has been appeared on screen drew.

so, have done motionevent.action_down , motionevent.action_up. work fine.

but, motionevent.action_move not working @ all.

this code,

@override public boolean ontouchevent(motionevent event) { if(event.getaction() == motionevent.action_down) { if(shape == shapeline) { graphicobject = new line(); ((line) graphicobject).getbegin().setx(event.getx()); ((line) graphicobject).getbegin().sety(event.gety()); } if(shape== shaperect) { graphicobject = new rectangle(); point temp = new point(event.getx(), event.gety()); endpoint = new point(); ((rectangle) graphicobject).settemppointofoneendrectangle(temp); } else if(event.getaction() == motionevent.action_move){ if(shape== shapeline) { final float x=event.getx(); final float y=event.gety(); } if(shape == shaperect) { endpoint.x=event.getx(); endpoint.y=event.gety(); invalidate(); }

anyone suggest me, action_move. have tried lot in code no changes , didnt find solution while moving. not know how this.. help/suggestions highly appreciated, thanks

can suggest me or ideas ?

i have googled lot , tried many possibilities.

any help/suggestions highly appreciated, !

basic thought when tap record point in variable,then within action_move record current point , draw line in between these 2 points.once done save point in previous point. sudo code:

point last; point current; ... case action_down: last=mouse.position; break; case action_move: current=mouse.position; drawline(current,last); last=current; break;

do way,your drawing should fine. n.b. remember,this sudo code. :p

edit. illustration 1 of app. pointed out should do:

public boolean ontouchevent(motionevent event) { int action = event.getaction(); switch(action & motionevent.action_mask) { case motionevent.action_down: initial.x=(int)event.getx(); initial.y=(int)event.gety(); break; case motionevent.action_move: current.x=(int)event.getx(); current.y=(int)event.gety(); //draw line using initial start , current end point //sudo code: drawline(initial,current) //now set initial current initial=current// continuity of drawing. break; } homecoming true; }

initial , current both point objects.

android canvas touch paint motionevent

No comments:

Post a Comment