tags:

views:

327

answers:

3
+3  Q: 

Piemenu for WPF

Are there any working piemenu controls for WPF?

+2  A: 

I've found this in my favorite , you can take a look at :

This

have a nice day.

Thomas M.
Note: This control only supports a single level of a pie menu.
Kelly
A: 

This question is probably long dead, but just a note that the control Thomas M posted, while awesome, has a major issue: You need to mouse over and click on the actual item instead of the pie slice. This means that the pie slices are not completely adjacent and IMO defeats a lot of the clickability (Frits's law) advantages of the control. So while it looks like a pie menu, it really just positions everything radially.

I ended up doing this:

    private static Path makeDeliciousKeyLimePieSlice(double innerRadius, double outerRadius,
        double startAngle, double endAngle, Vector ofs)
    {
        Point p1 = new Point(Math.Cos(endAngle) * innerRadius, Math.Sin(endAngle) * innerRadius) + ofs;
        Point p2 = new Point(Math.Cos(startAngle) * innerRadius, Math.Sin(startAngle) * innerRadius) + ofs;
        Point p3 = new Point(Math.Cos(startAngle) * outerRadius, Math.Sin(startAngle) * outerRadius) + ofs;
        Point p4 = new Point(Math.Cos(endAngle) * outerRadius, Math.Sin(endAngle) * outerRadius) + ofs;
        PathFigure fig = new PathFigure(p1, new PathSegment[] {
            new ArcSegment(p2, new Size(innerRadius, innerRadius), endAngle - startAngle, false, SweepDirection.Counterclockwise, true),
            new LineSegment(p3, true),
            new ArcSegment(p4, new Size(outerRadius, outerRadius), startAngle - endAngle, false, SweepDirection.Clockwise, true),
        }, true).GetAsFrozen();
        return new Path { Data = new PathGeometry(new[] { fig }).GetAsFrozen() };
    }

This will create a "slice" of the pie. You can style this how you want if you want a true pie menu. Another option is to make it transparent (set the fill to Brushes.Transparent; it must have a fill to be hit-test visible), which looks good for radial context menus. Here's my WIP after about half an hour's work (I know the spacing sucks):

alt text

EDIT: ah; the cursor doesn't appear in the shot -- basically, if you use the path overlay, you can have the mouse outside the actual control but still have it highlighted.

Robert Fraser
A: 

This control needs a bit of work still but it's a great starting point and supports multiple levels of items. (ie: a hierarchy) Check it out here

Kelly