Ho una classe con 3 membri, solo due di essi sono pertinenti; uno è un poligono e l'altro un int [] di coordinate. Voglio essere consapevole delle coordinate corrispondenti del poligono, ma sono davvero bloccato qui.Ottieni la classe padre del membro in MouseEvent
Conoscendo le coordinate del poligono intendo le coordinate cubiche astratte che memorizzo nella classe lungo quel poligono e che uso per dichiarare i suoi punti.
Le coordinate sono X, Y e Z e le memorizzo in un int [3] nella seguente classe. E quello che voglio fare è quello di essere in grado di catturare quelle coordinate cubi ogni volta l'evento viene attivato .:
public class Tile
{
public int[] coords;
public Polygon hex;
public List<object> content;
}
Il metodo della lista di riempimento:
foreach (int[] i in ValidCoordinates)
{
int[] coords = i;
double apotema = Math.Sqrt(Math.Pow(20, 2) - Math.Pow(20/2, 2));
double auxX = x + (coords[0] * (20 * 3/2));
double auxY = y + (coords[0] * apotema + (coords[1] * apotema * 2));
Polygon poly = Hex.HexagonalPolygon(20, auxX, auxY);
poly.Fill = Brushes.Blue;
Hexagon.Tile tile = new Hexagon.Casilla();
tile.coords = coords;
tile.hex = poly;
ListTiles.Add(tile);
}
E mi mostra il membro Poligono sulla lista di piastrelle come questo ...
foreach (Hexagon.Tile t in ListTiles)
{
PolyCanvas.Children.Add(t.hex);
}
e poi trovare il poligono con un MouseEvent e cambiare le sue proprietà:
private void PolyCanvas_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.OriginalSource is Polygon)
{
Polygon poly = e.OriginalSource as Polygon;
poly.Fill = Brushes.Red;
}
}
Un po 'più di codice ... Xmal:
<Grid Name="MainGrid">
<Grid.RowDefinitions>
<RowDefinition Height="400"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Canvas Name="PolyCanvas" MouseDown="PolyCanvas_MouseDown" Height="700" Width="1200">
</Canvas>
<TextBox Name="txt" Grid.Row="1"></TextBox>
</Grid>
ho accuratamente cercato una risposta, ma io sono all'oscuro.
Vuoi verificare se il mouse premuto sul poligono o su altri? –
Sul poligono, quello che ho premuto. – Commit
Hai provato a ottenere informazioni da 'mittente'? –