zoukankan      html  css  js  c++  java
  • xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

    how to change svg polygon size by update it's points in js

    matrixTransform

    https://stackoverflow.com/questions/40493506/get-updated-polygon-points-after-transformations-svg

    
    function screenPolygon(myPoly){
    	var sCTM = myPoly.getCTM()
    	var svgRoot = myPoly.ownerSVGElement
    
    	var pointsList = myPoly.points;
    	var n = pointsList.numberOfItems;
    	for(var m=0;m<n;m++)
    	{
    		var mySVGPoint = svgRoot.createSVGPoint();
    		mySVGPoint.x = pointsList.getItem(m).x
    		mySVGPoint.y = pointsList.getItem(m).y
    		mySVGPointTrans = mySVGPoint.matrixTransform(sCTM)
    		pointsList.getItem(m).x=mySVGPointTrans.x
    		pointsList.getItem(m).y=mySVGPointTrans.y
    	}
    	//---force removal of transform--
    	myPoly.setAttribute("transform","")
    	myPoly.removeAttribute("transform")
    }
    
    
    
        var sCTM = this.poly.getCTM();
        // SVGMatrix
        var svgRoot = this.poly.ownerSVGElement;
        // svg
        var mySVGPoint = svgRoot.createSVGPoint();
        // SVGPoint {x: 0, y: 0}
        log(`sCTM`, sCTM);
        log(`svgRoot`, svgRoot);
        log(`mySVGPoint`, mySVGPoint);
    
    

    matrix transforms

    https://stackoverflow.com/questions/38525536/svg-polygon-scale-and-set-points-accordingly

    Convert SVG polygon points to path

    https://stackoverflow.com/questions/16245712/convert-svg-polygon-points-to-path

    
    var points="270,328 270,376 342,376 342,368 358,368 358,320 314,320 298,336 278,336"
    
    var p = points.split(/s+/);
    var path = "";
    for( var i = 0, len = p.length; i < len; i++ ){
        path += (i && "L" || "M") + p[i]
    }
    
    console.log( path )
    => M270,328L270,376L342,376L342,368L358,368L358,320L314,320L298,336L278,336 
    
    

    C#

    https://stackoverflow.com/questions/11263936/changing-a-polygons-points


    demo

      getMinPoint() {
        const {
          x,
          y,
        } = this.getBoxSize();
        return {
          x,
          y,
        };
      }
      getMaxPoint() {
        const {
          x,
          y,
          width,
          height,
        } = this.getBoxSize();
        return {
          x: x + width,
          y: y + height,
        };
      }
      getSize() {
        const {
          width,
          height,
        } = this.getBoxSize();
        return {
          width,
          height,
        };
      }
      zoomWidth(w) {
        // 除最小点, 其他点 x 增大
        var sCTM = this.poly.getCTM();
        // SVGMatrix
        var svgRoot = this.poly.ownerSVGElement;
        // svg
        var mySVGPoint = svgRoot.createSVGPoint();
        // SVGPoint {x: 0, y: 0}
        log(`sCTM`, sCTM);
        log(`svgRoot`, svgRoot);
        log(`mySVGPoint`, mySVGPoint);
        const box = this.getBoxSize();
        const min = this.getMinPoint();
        const max = this.getMaxPoint();
        log(`box size`, box, min, max);
        log(`poly points`, this.poly.points);
        // log(`poly points`, this.poly.getAttribute(`points`));
        // 放大 width
        const points = [];
        [...this.poly.points].forEach(point => {
          const {
            x,
            y,
          } = point;
          const px = (x === min.x) ? x : x + w;
          if(x === min.x) {
            log(`min point x`, point)
          }
          const py = y;
          points.push(px, py);
        });
        this.poly.setAttribute(`points`, points.join(` `));
      }
    
    

    d3

    https://stackoverflow.com/questions/49261369/update-polygon-when-points-change-in-d3

    zrender

    mapbox

    canvas


  • 相关阅读:
    Java1:Chapter3
    css3圆角和阴影效果
    css3兼容各版本浏览器前缀
    DOM
    数组方法
    Math方法
    JSON
    字符串方法
    日期对象
    定时器
  • 原文地址:https://www.cnblogs.com/xgqfrms/p/12318489.html
Copyright © 2011-2022 走看看