Hexagon i WPF
Hej...Forsøger at lave min egen shape i WPF som skal være en ligesidet hexagon. Men min kode er ikke 100% optimal. 1. Hvis man sætter en border (stroke) på viser den kun halvdelen af borderen. Og den opfører sig mærkeligt når man ændrer størrelsen. Er det evt. muligt at lave en fixed ratio mellem width og height?
using System;
using System.IO;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace UntitledProject1
{
public partial class Hexagon : Shape
{
public Hexagon()
{
this.InitializeComponent();
// Insert code required on object creation below this point.
}
protected override Geometry DefiningGeometry
{
get
{
PathSegmentCollection segments = new PathSegmentCollection();
const double deg1 = 2 * Math.PI / 360;
const double degMinus30 = deg1 * -30;
const double degMinus150 = deg1 * -150;
double L = Width / 2 / Math.Cos(degMinus30);
Point A = new Point(Width / 2, 0);
Point B = new Point(Width, Math.Sin(degMinus30) * -L);
Point C = new Point(Width, L + B.Y);
Point D = new Point(Math.Cos(degMinus150) * L + C.X, Math.Sin(degMinus150) * -L + C.Y);
Point E = new Point(0, C.Y);
Point F = new Point(0, B.Y);
segments.Add(new LineSegment(B, true));
segments.Add(new LineSegment(C, true));
segments.Add(new LineSegment(D, true));
segments.Add(new LineSegment(E, true));
segments.Add(new LineSegment(F, true));
PathFigureCollection figures = new PathFigureCollection();
figures.Add(new PathFigure(A, segments, true));
return new PathGeometry(figures);
}
}
}
}
