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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
| PUBLIC SUB TrameFond() 'tracé trame de fond
DIM xx1 AS SINGLE DIM x2, y1, y2, fx, v AS SINGLE DIM scaleX, scaleY AS SINGLE DIM larg AS SINGLE DIM haut AS SINGLE ' La définition de ce zonage est le plus difficile dans ce type de projet ' Ne pas hésiter à prendre une feuille de papier et dessiner ce que vous voulez obtenir ' puis définissez votre zonage ' en déterminant l'ensemble des coordonnées de la zone '--------------- Zonage -------------------- Tout le zonage est en single (ce sont des points que nous allons dessiner) x2 = CSingle(Log10(300)) '<------------------- largeur de la zone (300Hz) xx1 = CSingle(Log10(10)) '<------------------- origine en largeur (10Hz) y2 = CSingle(Log10(0.000000001)) '<----------- hauteur de la zone y1 = CSingle(Log10(1000000000)) '<------------ origine en hauteur haut = CSingle(DrawingArea1.Height) '<-------- hauteur de DrawingArea larg = CSingle(DrawingArea1.Width) '<--------- largeur de DrawingArea scaleX = CSingle((larg) / (x2 - xx1)) '<------ échelle en largeur (tout est relatif) scaleY = CSingle((haut) / (y2 - y1)) '<------- échelle en hauteur (tout est relatif) '-------------------------------------------- WITH Draw '<---------------------------------------------------------------- on définit le dessin .Foreground = Color.Blue '<--------------------------------------------- les lignes bleues .Line(0, haut / 6, larg, haut / 6) .Line(0, haut / 3, larg, haut / 3) .Line(0, haut * 2 / 3, larg, haut * 2 / 3) .Line(0, haut * 5 / 6, larg, haut * 5 / 6) .Foreground = Color.Lighter(Color.DarkCyan) '<------------------------- les lignes cyan foncé .Line(0, haut * 7 / 18, larg, haut * 7 / 18) .Line(0, haut * 8 / 18, larg, haut * 8 / 18) .Line(0, haut * 10 / 18, larg, haut * 10 / 18) .Line(0, haut * 11 / 18, larg, haut * 11 / 18) .Foreground = Color.DarkGreen '<---------------------------------------- le texte en vert foncé .Text(" +6db", 0, haut / 6) .Text(" +3db", 0, haut / 3) .Text(" 0db", 0, haut / 2) .Text(" -3db", 0, haut * 2 / 3) .Text(" -6db", 0, haut * 5 / 6) FOR fx = 20 TO 100 STEP 10 '<------------------------------------------ les fréquences de 20Hz à 100Hz tous les 10Hz v = CSingle((Log(fx) / Log(10) - xx1) * scaleX) '<----------------- position horizontale variant avec la valeur de fx (plus exactement de son Log) .Text(Format((fx), "0#"), v, haut * 16 / 18) '<-------------------- le texte à la position voulue NEXT .Foreground = Color.DarkGreen '<---------------------------------------- lignes verticales désignant les fréquences de 20Hz à 200Hz tous les 5Hz FOR fx = 20 TO 200 STEP 5 ' v = CSingle((Log(fx) / Log(10) - xx1) * scaleX) '<----------------- position horizontale .Line(v, y2, v, haut) '<------------------------------------------- tracé de la ligne NEXT FOR fx = 110 TO 300 STEP 10 '<----------------------------------------- lignes verticales désignant les fréquences de 110Hz à 300Hz tous les 10Hz v = CSingle((Log(fx) / Log(10) - xx1) * scaleX) '<----------------- position horizontale .Line(v, y2, v, haut) '<------------------------------------------- tracé de la ligne NEXT FOR fx = 150 TO 250 STEP 50 '<----------------------------------------- le texte de 150Hz à 250hz au pas de 50Hz v = CSingle((Log(fx) / Log(10) - xx1) * scaleX) '<----------------- position horizontale .Text(Format((fx), "0#"), v, haut * 16 / 18) NEXT FOR fx = 25 TO 35 STEP 10 '<-------------------------------------------- le texte de 25Hz à 35Hz au pas de 10Hz v = CSingle((Log(fx) / Log(10) - xx1) * scaleX) '<----------------- position horizontale .Text(Format((fx), "0#"), v, haut * 16 / 18) NEXT FOR fx = 20 TO 100 STEP 10 'to 50 '<------------------------------------ le texte de 20Hz à 100Hz au pas de 10Hz v = CSingle((Log(fx) / Log(10) - xx1) * scaleX) '<----------------- position horizontale .Text(Format((fx / (fr / qt)), "0.0"), v, haut * 17 / 18) NEXT FOR fx = 150 TO 250 STEP 50 '<------------------------------------------ le texte de 150Hz à 250Hz au pas de 50Hz v = CSingle((Log(fx) / Log(10) - xx1) * scaleX) '<----------------- position horizontale .Text(Format((fx / (fr / qt)), "0.0"), v, haut * 17 / 18) NEXT v = CSingle((Log10(10.125) - xx1) * scaleX) ' <------------------------ position horizontale .Text(("Fréquences :", v, haut * 16 / 18) '<-------------------------- texte (position Horizontale, position Verticale) .Text(("Fréquences Normalisées" v, haut * 17 / 18) '<---------------- idem '------- cadre rouge -------------------- v = CSingle((Log(fr) / Log(10) - xx1) * scaleX) '<--------------------- position horizontale .Foreground = Color.Red '<--------------------------------------------- la couleur .Line(v, haut / 6, v, haut * 5 / 6) '<--------------------------------- ligne verticale .Line(0, haut / 2, larg, haut / 2) '<---------------------------------- ligne horizontale .Rect(v - larg / 6, haut / 3.5, larg / 3, haut / 2.325) '<------------- rectangle centré en FR .Text("FR", v, haut / 20 * 1.25) '<------------------------------------ le texte .Text(Format((fr), "###"), v, haut / 20 * 1.75) '<--------------------- la valeur de Fr en texte '---------------------------------------- END WITH '<---------------------------------------------------------------- fin de la définition du dessin
END
|