J'essaie de créer une grille Aitoff-Hammer dans Silverlight en utilisant C#. Cela devrait ressembler à this moins les points et les nombres.Dessin par programmation en utilisant C# dans Silverlight
Je ne suis pas un programmeur mais j'ai pu reconstituer this en utilisant un fichier ActionScript pour faire la même chose que celle qui a été écrite par mon prédécesseur. Comme vous pouvez le voir, je reçois la grille plus les lignes diagonales indésirables. Je ne sais pas comment éviter que les lignes diagonales soient dessinées dans mon code.
Toute aide que quelqu'un peut fournir pour résoudre mon problème ou pour signaler ce que je fais peut être très appréciée. S'il vous plaît laissez-moi savoir si j'ai omis des informations importantes. Merci.
Voici mon code:
PolyLineSegment segment = new PolyLineSegment();
PathFigure figure = new PathFigure();
figure.StartPoint = new Point(xCenter, yCenter);
PathGeometry geometry = new PathGeometry();
Path path = new Path();
path.Stroke = new SolidColorBrush(Colors.Black);
path.StrokeThickness = 2;
aitoff coords = new aitoff();
for (int ra = 0; ra <= 24; ra = ra + 3)
{
for (int dec = -90; dec <= 90; dec = dec + 3)
{
points = coords.GetAitoffCoord(ra, dec);
double xCoord = xCenter + points.X * width/2;
double yCoord = yCenter + points.Y * height/2;
segment.Points.Add(new Point(xCoord, yCoord));
}
}
for (int dec = -90; dec <= 90; dec = dec + 30)
{
for (int ra = 0; ra <= 12; ra = ra + 1)
{
points = coords.GetAitoffCoord(ra, dec);
double xCoord = xCenter + points.X * width/2;
double yCoord = yCenter + points.Y * height/2;
segment.Points.Add(new Point(xCoord, yCoord));
}
}
for (int dec = -90; dec <= 90; dec = dec + 30)
{
for (double ra = 12.01; ra <= 25; ra++)
{
points = coords.GetAitoffCoord(ra, dec);
double xCoord = xCenter + points.X * width/2;
double yCoord = yCenter + points.Y * height/2;
segment.Points.Add(new Point(xCoord, yCoord));
}
}
for (int dec = -90; dec <= 90; dec = dec + 3)
{
double ra = 12.01;
points = coords.GetAitoffCoord(ra, dec);
double xCoord = xCenter + points.X * width/2;
double yCoord = yCenter + points.Y * height/2;
segment.Points.Add(new Point(xCoord, yCoord));
}
figure.Segments.Add(segment);
geometry.Figures.Add(figure);
path.Data = geometry;
LayoutRoot.Children.Add(path);
// GetAitoff
public class aitoff
{
double ra;
double dec;
Point coords = new Point();
double ra2deg = Math.PI/180.0f;
public Point GetAitoffCoord(double raIn, double decIn)
{
ra = raIn * 360/24;
dec = decIn;
if (ra > 180)
ra = ra - 360;
double l = ra * ra2deg;
double b = dec * ra2deg;
double t = Math.Sqrt(2/(1 + Math.Cos(b) * Math.Cos(l/2)));
double x = 2 * t * Math.Cos(b) * Math.Sin(l/2);
double y = t * Math.Sin(b);
coords.X = x/(-2 * Math.Sqrt(2));
coords.Y = y/(-1 * Math.Sqrt(2));
return coords;
}
}
Y a-t-il une raison pour que vous le fassiez dans le code et pas dans XAML? – Jermismo
Je vais ajouter des éléments à la grille, ce qui je pense serait plus facile si je peux programmer des points sur la grille. – Kamal