none
如何将Rectange转变成四边相等的菱形? RRS feed

  • 问题

  • 对一个Width和Height均为100的Rectange,应用如下变换:

     

    SkewTransform st =  new SkewTransform { CenterX = centerX, CenterY = centerY, AngleX = -60,AngleY=30, };

     

    所得出的形状的透视效果是平行四边形,不是理想中四边相等的菱形。

     

    有办法实现么?

    2008年7月21日 19:28

答案

  •  HiYouAll 写:

    对一个Width和Height均为100的Rectange,应用如下变换:

     

    SkewTransform st =  new SkewTransform { CenterX = centerX, CenterY = centerY, AngleX = -60,AngleY=30, };

     

    所得出的形状的透视效果是平行四边形,不是理想中四边相等的菱形。

     

    有办法实现么?

    Rectangle做变换只能变换成平行四边形,如果要做菱形,比如Tile的菱形格子,要自己写Path,一个Rectangle是变换不出菱形的:),两个Rectangle然后再加上Clip剪切可以变换出菱形,但是这样还不如写个Path容易

    2008年7月24日 7:47
    版主

全部回复

  •  HiYouAll 写:

    对一个Width和Height均为100的Rectange,应用如下变换:

     

    SkewTransform st =  new SkewTransform { CenterX = centerX, CenterY = centerY, AngleX = -60,AngleY=30, };

     

    所得出的形状的透视效果是平行四边形,不是理想中四边相等的菱形。

     

    有办法实现么?

    Rectangle做变换只能变换成平行四边形,如果要做菱形,比如Tile的菱形格子,要自己写Path,一个Rectangle是变换不出菱形的:),两个Rectangle然后再加上Clip剪切可以变换出菱形,但是这样还不如写个Path容易

    2008年7月24日 7:47
    版主
  •  

    谢谢。

    你说的可行,但是我找到另外的方法了。

     

    另外,如果sl中能使用gdi+就好了。

    2008年7月24日 13:57