IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Téléchargé 5 fois
Vote des utilisateurs
1 
0 
Détails
Licence : Non renseignée
Mise en ligne le 5 juillet 2015
Langue : Français
Référencé dans
Navigation

Exemples d'utilisation de l'unité WinGraph

Collection de petits programmes utilisant l'unité WinGraph, testés avec Free Pascal 2.6.4.

Nombre de ces programmes ont été originellement écrits pour l'unité Graph de Turbo Pascal.
Nos ressources disponibles
Avatar de Roland Chastain
Rédacteur/Modérateur https://www.developpez.com
Le 06/07/2015 à 17:17
J'ai planché sur le sujet : "Comment convertir un code utilisant l'unité Graph (ou l'une des unités de Free Pascal qui en ont repris la syntaxe) en code utilisant BGRABitmap ?"

Eh bien, ce n'est pas évident, parce que les fonctions de l'une et de l'autre ne se correspondent pas à première vue. Pourtant je trouve l'idée intéressante.

Je vous montre une chose que je viens de faire. Vos observations seront les bienvenues.

J'ai pris un programme WinGraph (originellement écrit pour Turbo Pascal). J'ai retiré les "uses", et j'ai déclaré des fonctions homonymes aux fonctions manquantes. Ces fonctions produisent du code source. Voici le résultat à ce jour :

Code : Sélectionner tout
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
program Clowns3;
uses BGRABitmap, BGRABitmapTypes;
{$I utils}
var
  bmp: TBGRABitmap;
  color: TBGRAPixel;
begin
  bmp := TBGRABitmap.Create(640, 480, LongWordToBGRA($191970));
  color := LongWordToBGRA($FFFFFF);
  bmp.FillEllipseAntialias(163, 239, 100, 150, color);
  bmp.FillEllipseAntialias(476, 239, 100, 150, color);
  color := LongWordToBGRA($FF80FF);
  bmp.RoundRectAntialias(143, 244, 183, 284, 20, 20, color, 2, []);
  color := LongWordToBGRA($90EE90);
  bmp.RoundRectAntialias(456, 244, 496, 284, 20, 20, color, 2, []);
  color := LongWordToBGRA($ADD8E6);
  bmp.FillEllipseAntialias(163, 299, 50, 55, color);
  bmp.FillEllipseAntialias(163, 299, 50, 20, color);
  bmp.FillEllipseAntialias(163, 299, 50, 54, color);
  bmp.FillEllipseAntialias(163, 299, 50, 21, color);
  color := LongWordToBGRA($FF0000);
  bmp.FillEllipseAntialias(476, 299, 50, 55, color);
  bmp.FillEllipseAntialias(476, 299, 50, 20, color);
  bmp.FillEllipseAntialias(476, 299, 50, 21, color);
  bmp.FillEllipseAntialias(476, 299, 50, 54, color);
  bmp.FillEllipseAntialias(123, 239, 20, 60, color);
  bmp.FillEllipseAntialias(123, 243, 20, 10, color);
  color := LongWordToBGRA($FF);
  bmp.RoundRectAntialias(113, 233, 133, 253, 10, 10, color, 2, []);
  color := LongWordToBGRA($0);
  bmp.RoundRectAntialias(120, 240, 126, 246, 3, 3, color, 2, []);
  color := LongWordToBGRA($FFFFFF);
  bmp.RoundRectAntialias(113, 233, 133, 253, 10, 10, color, 2, []);
  color := LongWordToBGRA($FF0000);
  bmp.FillEllipseAntialias(203, 239, 20, 60, color);
  bmp.FillEllipseAntialias(203, 243, 20, 10, color);
  color := LongWordToBGRA($FF);
  bmp.RoundRectAntialias(193, 233, 213, 253, 10, 10, color, 2, []);
  color := LongWordToBGRA($0);
  bmp.RoundRectAntialias(200, 240, 206, 246, 3, 3, color, 2, []);
  color := LongWordToBGRA($FFFFFF);
  bmp.RoundRectAntialias(193, 233, 213, 253, 10, 10, color, 2, []);
  color := LongWordToBGRA($FF0000);
  bmp.FillEllipseAntialias(521, 239, 20, 60, color);
  bmp.FillEllipseAntialias(521, 243, 20, 10, color);
  color := LongWordToBGRA($FF);
  bmp.RoundRectAntialias(511, 233, 531, 253, 10, 10, color, 2, []);
  color := LongWordToBGRA($0);
  bmp.RoundRectAntialias(518, 240, 524, 246, 3, 3, color, 2, []);
  color := LongWordToBGRA($FFFFFF);
  bmp.RoundRectAntialias(511, 233, 531, 253, 10, 10, color, 2, []);
  color := LongWordToBGRA($FF0000);
  bmp.FillEllipseAntialias(434, 239, 20, 60, color);
  bmp.FillEllipseAntialias(434, 243, 20, 10, color);
  color := LongWordToBGRA($FF);
  bmp.RoundRectAntialias(424, 233, 444, 253, 10, 10, color, 2, []);
  color := LongWordToBGRA($0);
  bmp.RoundRectAntialias(431, 240, 437, 246, 3, 3, color, 2, []);
  color := LongWordToBGRA($FFFFFF);
  bmp.RoundRectAntialias(424, 233, 444, 253, 10, 10, color, 2, []);
  color := LongWordToBGRA($FF00FF);
  bmp.RoundRectAntialias(85, 85, 115, 115, 15, 15, color, 2, []);
  color := LongWordToBGRA($90EE90);
  bmp.RoundRectAntialias(64, 109, 94, 139, 15, 15, color, 2, []);
  color := LongWordToBGRA($ADD8E6);
  bmp.RoundRectAntialias(50, 136, 80, 166, 15, 15, color, 2, []);
  color := LongWordToBGRA($FFFF);
  bmp.RoundRectAntialias(41, 165, 71, 195, 15, 15, color, 2, []);
  color := LongWordToBGRA($FFFF00);
  bmp.RoundRectAntialias(35, 193, 65, 223, 15, 15, color, 2, []);
  bmp.FillEllipseAntialias(477, 180, 100, 50, color);
  bmp.FillEllipseAntialias(477, 180, 100, 50, color);
  bmp.SaveToFile('result.png');
  bmp.Free;
end.
Le dessin final n'est pas très réussi, mais l'idée est là. Qu'en pensez-vous ?
Avatar de Alcatîz
Responsable Pascal, Lazarus et Assembleur https://www.developpez.com
Le 07/07/2015 à 21:57
Bonjour,

Belle collection de programmes !

Citation Envoyé par Roland Chastain Voir le message
J'ai retiré les "uses", et j'ai déclaré des fonctions homonymes aux fonctions manquantes.
Je n'ai pas compris cette manoeuvre.
Avatar de Roland Chastain
Rédacteur/Modérateur https://www.developpez.com
Le 07/07/2015 à 22:49
Citation Envoyé par Alcatîz Voir le message
Bonjour,

Belle collection de programmes !
Merci ! La plupart ne sont pas de moi, je les ai glanés ici et là, triés, testés et adaptés à WinGraph. Je pense mettre à jour la collection de temps en temps, en y incluant des exemples plus avancés. J'ai fait encore quelques trouvailles cet après-midi. Connaissez-vous Nacho Cabanes ? Les exemples de ses différents tutoriels sur la programmation en Pascal sont de petits bijoux.

Citation Envoyé par Alcatîz Voir le message
Je n'ai pas compris cette manoeuvre.
Il s'agissait de produire du code source pour Lazarus, en captant les données et les opérations du programme original. Au lieu de lire le fichier, j'ai trouvé amusant de modifier le programme pour lui faire produire le code en question.

Code : Sélectionner tout
1
2
3
4
5
6
7
var
  gList: TStringList;

procedure SetBkColor(color: longword);
begin
  gList.Add(Format('  bmp := TBGRABitmap.Create(%d, %d, LongWordToBGRA($%x));', [MAXX + 1, MAXY + 1, color]));
end;
Je ne sais pas ce que vaut cette idée, mais c'était un bon exercice.
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.