Précédent   Forum du club des développeurs et IT Pro > Autres langages > Pascal > Free Pascal
Free Pascal Le compilateur Pascal multiplateforme
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/12/2012, 12h55   #1
Roland Chastain
Membre Expert
 
Homme Roland Chastain
Inscription : décembre 2011
Messages : 694
Détails du profil
Informations personnelles :
Nom : Homme Roland Chastain
Âge : 39
Localisation : Mali

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : décembre 2011
Messages : 694
Points : 1 007
Points : 1 007
Par défaut Unité WinGraph : utilisation de variables pour les couleurs

Bonjour !

Pour pouvoir facilement changer les couleurs de mon application sans avoir à chercher les lignes dispersées dans le code, j'ai pensé utiliser des variables intermédiaires.

Les couleurs prédéfinies dans l'unité WinGraph étant du type LongWord, j'ai déclaré des variables de ce type dans mon programme :

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
33
34
 
program Exemple;
 
uses
  WinCrt,
  WinGraph;
 
var
  couleur1, couleur2, couleur3: longWord;
 
procedure OpenGraph;
var
  gd, gm: smallInt;
begin
  gd := noPalette;
  gm := mCustom;
  SetWindowSize(100, 100);
  InitGraph(gd, gm, 'Exemple Wingraph');
  SetBkColor({Yellow}couleur1);
  ClearViewPort;
end;
 
begin
  couleur1 := Yellow;
  couleur2 := Burgundy;
  couleur3 := Tangerine;
 
  OpenGraph;
  SetColor({Burgundy}couleur2);
  SetFillStyle(SolidFill, {Tangerine}couleur3);
  FillRect(10, 10, 40, 40);
  ReadKey;
  CloseGraph;
end.
Mais ça ne marche pas. Le code se compile, mais le dessin n'apparaît pas : l'écran est noir comme si les couleurs n'avaient pas été initialisées.

Quelqu'un aurait-il une idée de ce qui ne va pas ?
__________________
L'Art est long et le Temps est court.
Roland Chastain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 21h40   #2
Roland Chastain
Membre Expert
 
Homme Roland Chastain
Inscription : décembre 2011
Messages : 694
Détails du profil
Informations personnelles :
Nom : Homme Roland Chastain
Âge : 39
Localisation : Mali

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : décembre 2011
Messages : 694
Points : 1 007
Points : 1 007
J'ai relu plus attentivement l'unité WinGraph. J'ai trouvé ces lignes :

Code :
internColor                 : array[0..NrColorNames-1] of ^longword;
Code :
1
2
3
4
5
6
7
8
9
10
11
12
procedure SetAbsoluteColors;
var i: longint;
begin
  for i:=0 to NrColorNames-1 do internColor[i]^:=NamesPalette[i];
end;
 
procedure SetInternColors;
begin
{$IFDEF 256_COLOR_NAMES}
  internColor[000]:=@AliceBlue;
  internColor[001]:=@AlizarinCrimson;
  {...}
J'essaie de comprendre...
__________________
L'Art est long et le Temps est court.
Roland Chastain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2012, 12h00   #3
Alcatîz
Responsable Pascal

 
Avatar de Alcatîz
 
Homme Jean-Luc Gofflot
Ressources humaines
Inscription : mars 2003
Messages : 5 513
Détails du profil
Informations personnelles :
Nom : Homme Jean-Luc Gofflot
Âge : 46
Localisation : Belgique

Informations professionnelles :
Activité : Ressources humaines
Secteur : Service public

Informations forums :
Inscription : mars 2003
Messages : 5 513
Points : 39 399
Points : 39 399
Envoyer un message via ICQ à Alcatîz Envoyer un message via MSN à Alcatîz Envoyer un message via Yahoo à Alcatîz Envoyer un message via Skype™ à Alcatîz
Bonjour,

Dans la doc en ligne de WinGraph il y a ceci :
Citation:
256_COLOR_NAMES switch defines 256 color name variables that can be used when selecting colors. If a legacy graphics driver is selected (with 16 or less colors), better let this switch disabled, since the colors are mapped incorrectly.
As-tu essayé d'utiliser comme pilote VGA ou SVGA, par exemple ? Idem pour le mode graphique, il faut sélectionner un mode supportant au minimum 256 couleurs.

__________________
Règles du forum
Tutoriels, exercices, FAQ, sources, compilateurs, outils, livres Pascal
Mes tutoriels et sources Pascal
FAQ Assembleur

Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
Alcatîz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2012, 13h44   #4
Roland Chastain
Membre Expert
 
Homme Roland Chastain
Inscription : décembre 2011
Messages : 694
Détails du profil
Informations personnelles :
Nom : Homme Roland Chastain
Âge : 39
Localisation : Mali

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : décembre 2011
Messages : 694
Points : 1 007
Points : 1 007
Merci pour la réponse.

Pour le pilote j'utilise la valeur noPalette.

Citation:
NoPalette - no palette, all colors in the system are available
A tout hasard j'ai essayé avec la valeur D8bit, mais le résultat a été le même.

Ce code fonctionne :

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
program Ex_Couleurs;
 
{$APPTYPE GUI}
 
uses
  WinCrt, WinGraph;
 
procedure OpenGraph;
var
  gd, gm: smallInt;
begin
  gd := noPalette;
  gm := mCustom;
  SetWindowSize(200, 200);
  InitGraph(gd, gm, 'WinGraph');
  SetBkColor(Orange);
  ClearViewPort;
end;
 
begin
  OpenGraph;
  ReadKey;
  CloseGraph;
end.
mais pas celui-ci :

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
program Ex_Couleurs;
 
{$APPTYPE GUI}
 
uses
  WinCrt, WinGraph;
 
var
  maCouleur: longWord;
 
procedure OpenGraph;
var
  gd, gm: smallInt;
begin
  gd := noPalette;
  gm := mCustom;
  SetWindowSize(200, 200);
  InitGraph(gd, gm, 'WinGraph');
  SetBkColor(maCouleur);
  ClearViewPort;
end;
 
begin
  maCouleur := Orange;
  OpenGraph;
  ReadKey;
  CloseGraph;
end.
__________________
L'Art est long et le Temps est court.
Roland Chastain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2013, 22h27   #5
Roland Chastain
Membre Expert
 
Homme Roland Chastain
Inscription : décembre 2011
Messages : 694
Détails du profil
Informations personnelles :
Nom : Homme Roland Chastain
Âge : 39
Localisation : Mali

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : décembre 2011
Messages : 694
Points : 1 007
Points : 1 007
Trouvé !

Les variables n'ont pas la bonne valeur tant que la procedure InitGraph n'a pas été appelée.

Pour plus de détail, veuillez consulter les tests contenus dans cette archive (sources et exécutables).
Fichiers attachés
Type de fichier : zip TestCouleur.zip (209,1 Ko, 0 affichages)
__________________
L'Art est long et le Temps est court.
Roland Chastain est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h47.


 
 
 
 
Partenaires

Hébergement Web