सभी को नमस्कार मैं कोशिश की है योग और बुनियादी सवाल और मेरे विचार जो अब तक काम नहीं करता है के साथ आने के लिए: एसConvert पथ
मूल रूप से मेरे सवाल है: उपयोगकर्ता तत्वों को एक साथ जोड़ता है, और मैं इन आंकड़ों के आधार पर एक नया तत्व बनाना चाहता हूं, जैसे उपयोगकर्ता परिभाषित तत्व के लिए एक नया पथ बनाया जा सकता है। आइए कहें कि मेरे पास एक वर्ग और त्रिकोण है। उपयोगकर्ता इसे एक घर में जोड़ता है। अब मैं घर को उपयोगकर्ता के लिए एक तत्व बनाना चाहता हूं। इसके लिए मुझे तत्व के पथ की आवश्यकता है, मैं इसे कैसे बना सकता हूं?
मेरा विचार उपयोग किए गए आकृति तत्व पथ तारों पर आधारित होते हैं। इसलिए मैं चाहता हूं कि इन्हें एक ज्यामिति तत्व में परिवर्तित किया जाए जिसे मैं बाद में उपयोग कर सकता हूं। मैं कोड के नीचे जवाब में André Meneses द्वारा आपूर्ति का उपयोग करें, कोड यहाँ दोहराया:
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;
}
यह मैं एक ज्यामिति पाने के लिए this link describes से उदाहरण का अनुसरण करने से करते हैं। उपरोक्त के साथ समस्या यह है कि मैं नए ज्यामिति तत्व के एक्स या वाई पदों तक नहीं पहुंच सकता, तो मैं इस स्थिति को कैसे निर्दिष्ट करूं?
मुझे लगता है कि स्थिति के लिए this link एक समाधान हो सकता है, अभी तक इसे अभी तक काम नहीं मिला है? :)
जब यह किया जाता है तो मैं इसे पहले लिंक के आधार पर एक ज्यामिति समूह में जोड़ता हूं, जैसे कि मैं नए तत्व के लिए पथ प्राप्त कर सकता हूं। लेकिन ज्यामिति समूह में सीमा के रूप में 0 है। तो इस काम के लिए मुझे व्यक्तिगत ज्यामिति तत्वों के लिए एक्स और वाई को परिभाषित करने की आवश्यकता है, और फिर यह geomtrygroup समस्या को हल कर सकता है या फिर मुझे इसे देखना होगा :) प्रश्न बहुत लंबे समय तक खड़ा रहा है: |
पाठ के नीचे पुराने प्रश्न और विचारों
मैं एक स्ट्रिंग है कि मैं कोड में एक ज्यामितीय आकार में कन्वर्ट करने के पीछे चाहते हैं है। इसलिए मैं Stackoverflow WPF C# Path: How to get from a string with Path Data to Geometry in Code (not in XAML) पर इस पाया
यह लिंक पता चलता है कि एक निम्न कोड के साथ पार्स का उपयोग कर पथ के लिए एक स्ट्रिंग परिवर्तित कर सकते हैं:
var path = new Path();
path.Data = Geometry.Parse("M 100,200 C 100,25 400,350 400,175 H 280");
हालांकि पार्स विंडोज फोन पर उपलब्ध नहीं है। मेरे अन्य प्रयासों ने इस मुद्दे को हल नहीं किया है। मैंने पथ जीमेट्री के साथ कोशिश की लेकिन पथ के रूप में एक स्ट्रिंग सेट करना संभव नहीं था?
तो मेरी समस्या यह है कि स्ट्रिंग को किसी तत्व पर बाध्यकारी न होने के पीछे कोड में एक ज्यामितीय आकार में परिवर्तित करने का तरीका है।
प्रथम चरण तो मैं निम्नलिखित
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);
के साथ एक पथ बनाने अब मैं एक ज्यामितीय आकार के लिए पथ परिवर्तित करने के लिए कोशिश कर रहा हूँ में सफल रहा।
अतिरिक्त
मेरा विचार this link describes के रूप में ही करना है।कहाँ उदाहरण दिखाता है:
var blackRectGeometry = new RectangleGeometry();
Rect rct = new Rect();
rct.X = 80;
rct.Y = 167;
rct.Width = 150;
rct.Height = 30;
blackRectGeometry.Rect = rct;
लेकिन आयत के बजाय मैं एक पैट ज के रूप में एक मनमाने आकार का उपयोग करें, लेकिन अभी भी जानकारी सेट करने जैसे निर्देशांक और आकार में सक्षम होना चाहते हैं।
अतिरिक्त
मैं एक usercontrol जो केवल इस तरह लग रही एक पथ शामिल परिभाषित करने की सोच रहा था:
<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>
लेकिन ज्यामिति के बारे में किसी भी तरह से इसका इस्तेमाल करने में सक्षम है। किसी को भी इस विधि का उपयोग कर कोई विचार है? किसी भी विधि की सराहना की है! :)
अतिरिक्त अतिरिक्त :)
यह, uielements से बाहर एक ज्यामितीय आकार बनाने के लिए संभव है ऐसी है कि एक usercontrol कि प्रदान की गई है एक ज्यामितीय पथ के लिए परिवर्तित किया जा सकता है?
प्रगति
मैं this link मैं एक मार्ग से एक ज्यामिति कहाँ बना सकते हैं पाया। पथ में संपत्ति चौड़ाई और ऊंचाई है।
लेकिन गुण मैं ज्यामिति या रास्ते में नहीं है निम्नलिखित है:
- Canvas.Left
- Canvas.Top
- Canvas.ZIndex (मुझे लगता है कि यह संभव है जब मैं इसे जोड़ने एक ज्यामिति समूह में)
ऐसा लगता है कि यह पथ की सीमाओं के माध्यम से किया जा सकता है। डेटा। लेकिन ज़िन्डेक्स नहीं। इसलिए इसे अभी भी ज्यामिति समूह के साथ परीक्षण करने की आवश्यकता है, और ज्यामिति को ज्यामिति समूह में जोड़ा जाना आवश्यक है।
[एमएसडीएन] (http://msdn.microsoft.com/en-us/library/system.windows.media.geometry.parse%28v=vs.110%29.aspx) को समेकित करना 'ज्यामिति। पर्स' इन प्लेटफार्मों पर इस्तेमाल किया जा सकता है: विंडोज फोन 8.1, विंडोज फोन 8. विंडोज फोन का कौन सा संस्करण आप विकसित कर रहे हैं? –
विंडोज फोन 8, शायद बाद की तारीख में विंडोज फोन 8.1 में अपग्रेड हो जाएगा। तो ज्यामिति। पर्स काम नहीं करता है? – JTIM
काम करने से आपका क्या मतलब है? आपका प्रोजेक्ट प्रकार और संस्करण इसका समर्थन नहीं करता है या पार्स विधि को कॉल करके आपको उचित परिणाम नहीं मिलता है? –