IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Codes sources à télécharger Pascal Discussion :

Exemples d'utilisation de l'unité WinGraph


Sujet :

Codes sources à télécharger Pascal

  1. #1
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 069
    Points : 15 448
    Points
    15 448
    Billets dans le blog
    9
    Par défaut Exemples d'utilisation de l'unité WinGraph
    Bonjour,

    Je vous propose un nouvel élément à utiliser : 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.



    Qu'en pensez-vous ?
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 069
    Points : 15 448
    Points
    15 448
    Billets dans le blog
    9
    Par défaut
    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 - Visualiser dans une fenêtre à part
    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 ?
    Fichiers attachés Fichiers attachés
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  3. #3
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 411
    Points
    59 411
    Billets dans le blog
    2
    Par défaut
    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.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    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]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  4. #4
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 069
    Points : 15 448
    Points
    15 448
    Billets dans le blog
    9
    Par défaut
    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 - Visualiser dans une fenêtre à part
    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.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

Discussions similaires

  1. [Free Pascal] Unité WinGraph : utilisation de variables pour les couleurs
    Par Roland Chastain dans le forum Free Pascal
    Réponses: 4
    Dernier message: 05/05/2013, 22h27
  2. [XML]Exemples d'utilisation
    Par le Daoud dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 18/01/2006, 18h04
  3. Exemple d'utilisation de SOAP avec C++
    Par jlassira dans le forum Bibliothèques
    Réponses: 5
    Dernier message: 04/01/2006, 08h42
  4. Exemple d'utilisation de XMLDocument
    Par Mickey.jet dans le forum Langage
    Réponses: 4
    Dernier message: 20/06/2005, 19h51
  5. Recherche des exemple d'utilisation
    Par lemme dans le forum Merise
    Réponses: 2
    Dernier message: 26/02/2003, 13h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo