X Y Koordinaten mit WPF

12/10/2007 - 19:39 von Anas | Report spam
Hallo,

ich möchte einfach ein Ellipse und drin die X,Y Koordinaten (Linien) Zeichen.
Wenn man in den Text Feldern die X und Y Werten eingibt, muss einfach diesen
Punkt im Kreis gezeichnet werden.

ich habe das Problem, wie man X und Y (In meinem Code Beispiel Px und Py)
Werten genau ermitteln muss

ich habe folgendes implementiert:

<Grid Width="140" Height="140" HorizontalAlignment="Center"
VerticalAlignment="Center">

<!--Ellipse-->
<Ellipse HorizontalAlignment="Center" Fill="White"
VerticalAlignment="Center" Width="120" Height="120" StrokeThickness="1"
Stroke="Black"/>

<!--Punkt-->
<Ellipse Fill="Lime" Width="25" Height="25">
<Ellipse.RenderTransform>
<TranslateTransform X="{Binding Px}" Y="{Binding Py}"/>
</Ellipse.RenderTransform>
</Ellipse>


<!-- X Coordinate -->
<Path Stroke="Black" StrokeThickness="1">
<Path.Data>
<LineGeometry StartPoint="140 70" EndPoint="0 70"/>
</Path.Data>
</Path>

<!-- Y Coordinate -->
<Path Stroke="Black" StrokeThickness="1">
<Path.Data>
<LineGeometry StartPoint="70 140" EndPoint="70 0"/>
</Path.Data>
</Path>

</Grid>

Die Klasse enthàlt die Berechnung für X und Y Punkten, damit sie im Kreis
gezeichnet werden Anhand X,Y Koordinaten:

double _Px = 60 * Math.Cos(0);
public double Px
{
get
{
return _Px;
}
}

double _Py = 60 * Math.Sin(0);
public double Py
{
get
{
return _Py;
}
}

Vielen Dank
 

Lesen sie die antworten

#1 Frank Dzaebel
12/10/2007 - 21:10 | Warnen spam
Hallo Anas,

ich möchte einfach ein Ellipse und drin die X,Y Koordinaten (Linien)
Zeichen.
Wenn man in den Text Feldern die X und Y Werten eingibt, muss einfach
diesen
Punkt im Kreis gezeichnet werden.



Nur hast Du keine Textfelder in Deinem Projekt ...
Ich weiss auch nich wie Deine Klasse aussieht. Du
hast nur ein paar Eigenschaften gepostet.
Das Ziel ist mir nicht richtig klar geworden.

Ich habe mal zwei TextBoxen eingebaut und
Name="xPpath" und "yPath" eingefügt, um die
Striche gemàss diesen TextBoxen zu àndern:

<Window x:Class="WpfCoordinates.Window1"
xmlns="http://schemas.microsoft.com/winfx/...tion"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">

<StackPanel>
<TextBlock Width="140">
<Label xml:space="preserve">x =</Label>
<TextBox Name="xCoord" Width="110">100</TextBox>
</TextBlock>

<TextBlock Width="140">
<Label xml:space="preserve">y =</Label>
<TextBox Name="yCoord" Width="110">80</TextBox>
</TextBlock>

<Grid
Width="140" Height="140"
HorizontalAlignment="Center"
VerticalAlignment="Center">

<Ellipse
HorizontalAlignment="Center"
Fill="White" VerticalAlignment="Center"
Width="120" Height="120" StrokeThickness="1"
Stroke="Black"/>
<!--Punkt-->
<Ellipse Fill="Lime" Width="25" Height="25">
<Ellipse.RenderTransform>
<TranslateTransform
X="{Binding Px}" Y="{Binding Py}"/>
</Ellipse.RenderTransform>
</Ellipse>

<Path Stroke="Black" StrokeThickness="1" Name="xPpath">
<Path.Data>
<LineGeometry
StartPoint="140 70" EndPoint="0 70"/>
</Path.Data>
</Path>

<Path Stroke="Black" StrokeThickness="1" Name="yPpath">
<Path.Data>
<LineGeometry
StartPoint="70 140" EndPoint="70 0"/>
</Path.Data>
</Path>

</Grid>
</StackPanel>
</Window>


//=// Window1.xaml.cs

using System;
using System.Windows;
using System.Windows.Controls;
using System.Globalization;
using System.Windows.Media;

namespace WpfCoordinates
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
xCoord.TextChanged += new
TextChangedEventHandler(Coordinate_TextChanged);
yCoord.TextChanged += new
TextChangedEventHandler(Coordinate_TextChanged);
}

void Coordinate_TextChanged(object sender,
TextChangedEventArgs e)
{
double xValue, yValue;
DoubleParse(xCoord, out xValue);
DoubleParse(yCoord, out yValue);
LineGeometry lg = (LineGeometry)yPpath.Data;
lg.StartPoint = new Point(xValue, lg.StartPoint.Y);
lg.EndPoint = new Point(xValue, lg.EndPoint.Y);
}

private void DoubleParse(TextBox coord, out double val)
{
string number = coord.Text.Replace(',','.');
double.TryParse(number,NumberStyles.Float,
CultureInfo.InvariantCulture, out val);
}
}
}

//Ggf. poste mir einfach Dein Projekt mit Infos.
Ein Anruf ist im Zweifel auch ok.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen