ios - Getting issue in CGPath Scale -


i drawing polygon using cgpath , adding cashapelayer.i want scale cgpath when user click on it. know how scale cgpath. when click cgpath, cgpath drawing far centre while drawing polygon in centre.

cgaffinetransform scaletransform = cgaffinetransformmakescale(scalefactor, scalefactor); cgpathref oldpath = polygonlayer.path; cgpathref scaledpath = cgpathcreatecopybytransformingpath(oldpath, &scaletransform); polygonlayer.path = scaledpath; 

the problem you're used uiview transformation, done center of view.
cgpath transformation done on points (imagine cgpointzero center of path).
solution: translate cgpointzero , scale , , original coordinates.

cgpathref cgpath_ngcreatecopybyscalingpatharoundcentre(cgpathref path,                                            const float scale) {     cgrect bounding = cgpathgetpathboundingbox(path);     cgpoint pathcenterpoint = cgpointmake(cgrectgetmidx(bounding), cgrectgetmidy(bounding));      cgaffinetransform translateandscale = cgaffinetransformtranslate( cgaffinetransformmakescale(scale, scale), - pathcenterpoint.x, -pathcenterpoint.y) ;     cgaffinetransform translateback = cgaffinetransformmaketranslation(pathcenterpoint.x, pathcenterpoint.y);      cgpathref centeredandscaled = cgpathcreatecopybytransformingpath(path, &translateandscale);     cgpathref translatedpathref = cgpathcreatecopybytransformingpath(centeredandscaled, &translateback);      cgpathrelease(centeredandscaled);      return translatedpathref; } 

Comments

Popular posts from this blog

java - activate/deactivate sonar maven plugin by profile? -

python - TypeError: can only concatenate tuple (not "float") to tuple -

java - What is the difference between String. and String.this. ? -