在WPF中剪切椭圆 - 定位关闭

时间:2015-01-20 20:23:27

标签: c# wpf

我试图“削减”几个省略号的一部分,这是一个非常大的计划。由于我在完成这项工作时遇到了麻烦,我已经开始了一个新项目,我试图在这个项目中小规模地解决这个问题。再次,我得到一些非常奇怪的结果 - 我期望与定位有关。请参阅以下代码以获取最小的工作示例。

程序创建一个椭圆,给它一个漂亮的颜色并将其放在舞台上。然后它继续创建所谓的'RectangleGeometry',我们将用它来进行裁剪。请注意,几何图形位于 0,0 ,宽度为40,高度为200.结果可在以下屏幕截图中看到;

screenshot

我的最终目标是这样:能够将RectangleGeometry放置在任何位置(比方说200,300),并将椭圆剪切到该位置。

Ellipse abcEllipse = new Ellipse{
    Margin = new Thickness(100, 100, 0, 0),
    Fill = Brushes.HotPink,
    Height = 80,
    Width = 60
};

DrawCanvas.Children.Add(abcEllipse);

RectangleGeometry clipRectangle = new RectangleGeometry {
    Rect = new Rect(0, 0, 40, 200)
};

GeometryGroup myGeometryGroup1 = new GeometryGroup();
myGeometryGroup1.Children.Add(clipRectangle);

Path myPath1 = new Path { Stroke = Brushes.Black, StrokeThickness = 1 };
SolidColorBrush mySolidColorBrush = new SolidColorBrush();
mySolidColorBrush.Color = Color.FromArgb(255, 204, 204, 255);
myPath1.Opacity = 0.2;
myPath1.Fill = mySolidColorBrush;
myPath1.Data = myGeometryGroup1;

DrawCanvas.Children.Add(myPath1);

abcEllipse.Clip = clipRectangle;

更新:可能确实需要进一步澄清;我想达到以下效果 - 如附图所示。将椭圆放置在平台上,旋转椭圆并切掉椭圆的顶部。 (以这种方式,它“尊重”新的轮换,从而削减现在的 new 顶部)

ellipse example!

然而;这是我在应用“分配给形状的剪辑几何将与该形状相关的知识”这一知识时得到的结果。正如您所看到的,它并没有真正切割到椭圆的“新”顶部。

wrong cut ellipse

更新2:添加了用于旋转椭圆的代码;

TransformGroup tg = new TransformGroup();
tg.Children.Add(new RotateTransform(40));
abcEllipse.RenderTransform = tg;

0 个答案:

没有答案