tracé de courbe non fait dans Graphics
Bonjour,
nouveau problème sur mes graphics
j'ai en variables globales un "ArrayList tab" dans lequel sont rangés plusieurs tableaux de "PointF" à dessiner sur mon Image => tab[0] = PointF[], tab[1] = PointF[], ...
cet ArrayList est rempli lors de l'ouverture d'un fichier qui possède ces points dont j'ai besoin par la méthode suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| private bool OpenFile()
{
PointF[] pt = new PointF[2];
//ouverture du fichier et traitements afin d'obtenir les points que je souhaite
//
//TabPoints est un tableau contennant le mappage de ma carte(représenté par un fichier .png en ressource) que j'ai faite
// donc ici, je récupère le point gauche-bas et le point haut-droit
pt[0] = map.searchPointFromLatAndLong(map.TabPoints, longitudeFirst, latitudeFirst);
pt[1] = map.searchPointFromLatAndLong(map.TabPoints, longitudeLast, latitudeLast);
ArrayList grp = map.ValeursPressions(map.TabPoints, DataPts, longitudeFirst, latitudeFirst, longitudeLast, latitudeLast, longitudinalIncr, latitudinalIncr);
pressions.Clear();
for (int i = 0; i < grp.Count; i++)
pressions.Add((PointF[])map.MinMaxPressionsSurLatitude((GroupPression)grp[i]));
rect = new Rectangle((int)pt[0].X, (int)pt[1].Y, (int)(pt[1].X - pt[0].X), (int)(pt[0].Y - pt[1].Y));
//on redessine le graphics
this.panel1.Invalidate();
return true;
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| private void panel1_Paint(object sender, PaintEventArgs e)
{
float tension = (float)0.2;
Graphics g = e.Graphics;
Pen aPen = new Pen(Color.Black, (float)1);
if(ImOri == null)
ImOri = (Image)(rm.GetObject("map"));
g.SmoothingMode = SmoothingMode.AntiAlias; // anticrénelage
Point ulCorner = new Point(0, 0);
Point urCorner = new Point(panel1.Width, 0);
Point llCorner = new Point(0, panel1.Height);
Point[] destPara = { ulCorner, urCorner, llCorner };
if (rect.IsEmpty)
g.DrawImage(ImOri, destPara);
else
g.DrawImage(ImOri, destPara, rect, GraphicsUnit.Pixel);
if (tab.Count != 0)
for (int i = 0; i < tab.Count; i++)
{
g.DrawCurve(aPen, (PointF[])tab[i], tension);
}
g.Dispose();
aPen.Dispose();
rm.ReleaseAllResources();
} |
il m'affiche bien avant d'ouvrir le fihcier toute ma carte ... lorsque j'ouvre le fichier il me fait un zoom sur l'endroit précisé mais ne m'affiche pas mes tracés de courbes
en passant un point d'arrêt sur la dernière conditionnelle if de la méthode Paint, je remarque qu'il y passe indéfiniment non, car sans le déboguage il m'affiche mon Form mais qu'il y passe au moins une vingtaine de fois (mon tab ne comportant que 17 tableaux de points)
je ne vois pas du tout d'où ça peut venir