Konvertieren Pfad der geometrischen Form

Hey an alle ich habe versucht zu summieren und kommen mit der grundlegenden Frage, und meine Idee, die nicht so weit :S

Im Grunde ist meine Frage:
Der Benutzer fügt Elemente zusammen, und erstellen Sie ein neues element basierend auf diesen zahlen, so dass Sie einen neuen Pfad für den Benutzer definiertes element. Können sagen, ich habe ein Quadrat und ein Dreieck. Der Anwender kombiniert diese zu einem Haus. Jetzt will ich machen das Haus ein element für den Benutzer. Dafür brauche ich den Pfad des Elements, wie erstelle ich diese?

Meine Idee
Die Abbildung Elemente, die verwendet werden, basieren auf Pfad-strings. Deshalb möchte ich diese umgewandelt werden, um eine geometrie element, das ich später verwenden können auf. Ich verwende den code, den Sie zusammen durch André Meneses in der Antwort unten der code repliziert hier:

public static Geometry PathMarkupToGeometry(ShieldGearViewModel shieldGearModelRec)
    {
        string pathMarkup = shieldGearModelRec.Gear.Path;
        try
        {
            string xaml =
            "<Path " +
            "xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'>" +
            "<Path.Data>" + pathMarkup + "</Path.Data></Path>";
            var path = System.Windows.Markup.XamlReader.Load(xaml) as System.Windows.Shapes.Path;
            //Detach the PathGeometry from the Path
            if (path != null)
            {
                path.Height = shieldGearModelRec.Gear.Height;
                path.Width = shieldGearModelRec.Gear.Width;
                path.Fill = new SolidColorBrush(Colors.Green);
                path.Stretch = Stretch.Fill;
                Geometry geometry = path.Data;
                //Test not working, exception is thrown
                //Rect transRect = new Rect(shieldGearModelRec.Gear.x, shieldGearModelRec.Gear.y, shieldGearModelRec.Gear.Width, shieldGearModelRec.Gear.Height);
                //geometry.Transform.TransformBounds(transRect);
                path.Data = null;
                return geometry;
            }
            return null;
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex);
        }
        return null;
    }

Diese ich tun, um eine Geometrie zu Folgen dem Beispiel von dieser link beschreibt. Das problem mit der oben genannten ist, dass ich kann nicht auf x-oder y-Positionen der neuen geometrie-element, also wie kann ich festlegen, diese position?

Für die position, die ich denke, dieser link könnte eine Lösung sein, nur habe nicht bekommen, es funktioniert noch? 🙂

Wenn dies geschehen ist habe ich es zu einer geometrygroup auf der Grundlage der vor dem link, so dass ich kann einen Pfad für das neue element. Aber die geometrygroup hat 0 als Grenzen.
Damit das funktioniert, muss ich definieren Sie x und y für die einzelnen geometrie-Elemente, die sich dann vielleicht lösen die geomtrygroup problem oder ich habe dann zu schauen nach 🙂 die Frage steht für toooo lange 😐

TEXT UNTEN IST DIE ALTE FRAGE UND GEDANKEN

Ich habe einen string, den ich möchte um konvertieren zu einer geometrischen Form in der code-behind. Also ich fand diese auf Stackoverflow WPF C# - Path: Wie man aus einem string mit Pfad-Daten zur Geometrie im Code (nicht in XAML)

Dieser link suggeriert, dass kann man umwandeln eines string zu einem Pfad mit parse mit dem folgenden code:

var path = new Path();
path.Data = Geometry.Parse("M 100,200 C 100,25 400,350 400,175 H 280");

Jedoch analysieren ist nicht verfügbar auf Windows Phone. Meine anderen Bemühungen nicht zu einer Lösung des Problems. Ich habe versucht, mit pathGeometry aber nicht möglich zu sein scheint um einen string als Pfad?

Also mein problem ist, wie konvertiert eine Zeichenfolge, die eine geometrische Form in der code-behind-keine Bindung zu einem bestimmten element anzuzeigen.

Ersten Schritt
So ich habe es geschafft, erstellen Sie einen Pfad mit der folgenden

var pathTesting = new System.Windows.Shapes.Path();
var b = new System.Windows.Data.Binding
{
    Source = DecorationOnShield[i].Gear.Path
};
System.Windows.Data.BindingOperations.SetBinding(pathTesting, System.Windows.Shapes.Path.DataProperty, b);

Nun bin ich versucht, zu wandeln den Pfad zu einer geometrischen Form.

Extra

Meine Idee ist, das gleiche zu tun wie dieser link beschreibt. Wo das Beispiel zeigt :

var blackRectGeometry = new RectangleGeometry();
Rect rct = new Rect();
rct.X = 80;
rct.Y = 167;
rct.Width = 150;
rct.Height = 30;
blackRectGeometry.Rect = rct;

Aber statt Rechteck ich möchte eine beliebiger Form in form eines path, aber immer noch in der Lage sein, Informationen wie Koordinaten und Größe.

Extra

Dachte ich an die Definition einer usercontrol, die aus einem Pfad nur so Aussehen:

<UserControl x:Class="UndoRedoShield.View.Geometry"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WP8"
mc:Ignorable="d"
Canvas.Left="{Binding Gear.x}" Canvas.Top="{Binding Gear.y}">


<Path Data="{Binding Gear.Path}" Fill="{Binding Gear.Color}" Stretch="Fill" UseLayoutRounding="False" Height="{Binding Gear.Height}" Width="{Binding Gear.Width}" Opacity="{Binding Gear.Opacity}">
    <Path.RenderTransform>
        <ScaleTransform ScaleX="{Binding Gear.Scale}" ScaleY="{Binding Gear.Scale}"/>
    </Path.RenderTransform>

</Path>

</UserControl>

Aber nicht in der Lage, es zu benutzen, die in irgendeiner Weise in Bezug auf geometrie. Jemand eine Idee, mit dieser Methode? Jede Methode wird sehr geschätzt ! 🙂

extra extra 🙂

Ist es möglich, erstellen Sie eine geometrische Form aus uielements, so dass ein Benutzersteuerelement, das gerendert wird, Kann konvertiert werden, um eine geometrische Bahn?

Fortschritt

Fand ich dieser link Wo kann ich erstellen Sie eine geometrie aus einem Pfad. Der Pfad hat die Eigenschaft, Breite und Höhe.

Aber die Eigenschaften habe ich nicht in der geometrie oder der Pfad ist folgende:

  1. Leinwand.Links
  2. Leinwand.Top
  3. Leinwand.ZIndex (ich denke, dies ist möglich wenn ich es zu einer GeometryGroup)

Scheint, wie dieses getan werden kann, über die bounds-Eigenschaft der Pfad.Daten. Aber nicht ZIndex. Also das muss noch getestet werden mit geometryGroup, und die Geometrie muss Hinzugefügt werden, um die GeometryGroup.

  • Accourding to MSDN 'Geometrie.Analysieren' kann verwendet werden, auf diesen Plattformen: Windows Phone 8.1, Windows Phone 8. Welche version von windows phone entwickeln Sie?
  • Windows Phone 8, Wahrscheinlich wird ein Upgrade auf windows phone 8.1 zu einem späteren Zeitpunkt. Also die Geometrie.Analysieren funktioniert nicht?
  • Was meinst du mit funktioniert nicht? Ihr Projekt-Typ und-version nicht unterstützt, oder durch Aufruf der Parse-Methode erhalten Sie nicht richtigen Ergebnis?
  • Es ist nicht verfügbar. Ich habe alle updates, ich kann auf alle Geometrie-Objekte, sondern Geometrie.Analysieren ist nicht verfügbar. Und ich fand eine Arbeit um für dieses. Es ist also nicht wirklich das Problem.
InformationsquelleAutor JTIM | 2014-04-10
Schreibe einen Kommentar