begin process at 2013 05 25 14:12:43
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > NUANCIER POUR CODER EN RGB

NUANCIER POUR CODER EN RGB


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Classé sous :Graphisme, Nuancer, Utilisation Niveau :Débutant Date de création :01/06/2009 Vu / téléchargé :4 388 / 236

Auteur : Toidil

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Ce programme permet de coder une couleur en RGB et de l'importer dans un programme sans avoir à noter les valeurs de RGB.
L'exécutif du programme est conservé dans la barre du bureau pour être appelé suivant les besoins.
La couleur retenue est mise en mémoire pour être placée dans le scipte à l'endroit désiré.


 Conclusion

Programme de débutant que j'utilise souvent.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture BILLARD FLIPPER
Source avec Zip AWÉLÉ JEU DE STRATÉGIE AFRICAIN
Source avec Zip BATAILLE NAVALE CONTRE ORDINATEUR
Source avec Zip DÉMÉNAGEUR RÉSOLU
Source avec Zip DÉMÉNAGEUR

 Sources de la même categorie

Source avec Zip Source avec une capture SEAM CARVING V2 par barbichette
Source avec Zip Source avec une capture SEAM CARVING par barbichette
Source avec Zip Source avec une capture EFFET MATRIX DANS UN PANEL par soldier8514
Source avec Zip Source avec une capture REDIMENSIONNEMENT XBR AVEC DES FACTEURS D'ÉCHELLE QUELCONQUE... par pseudo3
Source avec Zip Source avec une capture DÉFORMATION D'UN VISAGE par barbichette

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture BILLARD FLIPPER par Toidil
Source avec Zip AWÉLÉ JEU DE STRATÉGIE AFRICAIN par Toidil
Source avec Zip BATAILLE NAVALE CONTRE ORDINATEUR par Toidil
Source avec Zip DÉMÉNAGEUR RÉSOLU par Toidil
Source avec Zip Source avec une capture TRIPLET : JEU DE CHIFFRES CROISÉS par Debiars

Commentaires et avis

Commentaire de f0xi le 01/06/2009 15:26:08 administrateur CS

Tiens voila une amelioration...
Tu pourrais y ajouter plus tard le formatage en CMJ, HLS etc.




unit Nuance;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Clipbrd,
  Dialogs, Controls, Forms, StdCtrls, ComCtrls, ExtCtrls, Graphics;

type
  TMagicColor = packed record
    case integer of
      0 : (RGBA  : array[1..4] of Byte);
      1 : (Color : Integer);
  end;

  TForm1 = class(TForm)
    Panel1  : TPanel;
    Panel2  : TPanel;
    Panel3  : TPanel;
    Button1 : TButton;
    Button2 : TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    fMagicColor : TMagicColor;
    fPanels     : array[1..3] of TPanel;
    fTrackBars  : array[1..3] of TTrackBar;
    fComboBox   : TComboBox;
    fColFmt     : integer;
  protected
    function GetColorFmt: string; virtual;
    procedure Initialize; virtual;
    procedure DoComboChange(Sender: TObject);
    procedure DoTrackbarChange(Sender: TObject);
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

const
  ColMask : array[1..3] of integer = ($000000FF, $0000FF00, $00FF0000);

function TForm1.GetColorFmt: string;
var
  ODS : char;
const
  GLR = 1/255;
begin
  // Retourne une chaine qui represente la couleur dans le format désiré
  with fMagicColor do
    case fColFmt of
      // Delphi BGR : $00000000 a $00FFFFFF
      1 : result := format('$%.8x',[Color]);

      // HTML RGB : #000000 a #FFFFFF
      2 : result := format('#%.2x%.2x%.2x',[RGBA[1], RGBA[2], RGBA[3]]);

      // Hexa RGB : 000000 a FFFFFF
      3 : result := format('%.2x%.2x%.2x',[RGBA[1], RGBA[2], RGBA[3]]);

      // OpenGL RGB : 0.0, 0.0, 0.0 a 1.0, 1.0, 1.0
      4 :
        begin
          ODS := DecimalSeparator;
          DecimalSeparator := '.';
          result := format('%.4g, %.4g, %.4g',[GLR*RGBA[1], GLR*RGBA[2], GLR*RGBA[3]]);
          DecimalSeparator := ODS;
        end
      else
        // Decimal RGB : 0 0 0 a 255 255 255
        result := format('%d, %d, %d',[RGBA[1], RGBA[2], RGBA[3]]);
    end;
end;

procedure TForm1.Initialize;
var
   I : Byte;
begin
  for I := 1 to 3 do
  with fPanels[I] do
  begin
    // On definie le texte du Panel qui correspond a l'octet de couleur associé
    Caption := IntToStr(fMagicColor.RGBA[I]);

    // Sa hauteur depend egalement de l'octet de couleur associé
    Height  := fMagicColor.RGBA[I];

    // On change sa position pour qu'elle suive le curseur de la Trackbar
    Top     := 190 + fTrackBars[I].Position;

    // Finalement on definie sa couleur par l'octet de couleur associé
    Color   := fMagicColor.Color and ColMask[I];
  end;

  // On definie la couleur de panel1 et panel2 selon la couleur réglée
  Panel1.Color   := fMagicColor.Color;
  Panel2.Color   := Panel1.Color;

  // On affiche la couleur formatée en texte
  Panel3.Caption := GetColorFmt;
end;

procedure TForm1.FormCreate(Sender: TObject);
var I : Byte;
begin
  // Par defaut tout est blanc
  fMagicColor.Color := clWhite;

  // Par defaut on affiche en decimal RGB
  fColFmt           := 0;

  // Combobox pour le formatage texte de la couleur
  fComboBox := TComboBox.Create(Panel2);
  with fComboBox do
  begin
    // Le parent est Panel2!
    Parent     := Panel2;

    // L'objet n'herite pas de la fonte de Panel2
    ParentFont := false;

    // Ont redefinie la police
    Font.Size  := 8;
    Font.Style := [];

    // On vide le texte par defaut
    Text       := '';

    // On definie la position et dimension de l'objet
    SetBounds(1,72,220,22);

    // On definie les lignes de textes dans l'objet
    Items.BeginUpdate;
    try
      Items.Clear;
      Items.Add('Format Decimal RGB (R, G, B)');
      Items.Add('Format Delphi ($00BBGGRR)');
      Items.Add('Format HTML (#RRGGBB)');
      Items.Add('Format Hexa RGB (RRGGBB)');
      Items.Add('Format OpenGL RGB (R.R, G.G, B.B)');
    finally
      Items.EndUpdate;
    end;

    // Par defaut on est en format Decimal RGB
    ItemIndex := 0;

    // On assigne finalement le gestionnaire d'evenement
    OnChange  := DoComboChange;
  end;

  for I := 1 to 3 do
  begin
    // Trackbar pour augmenter ou diminuer la couleur R,G ou B
    fTrackBars[I] := TTrackBar.Create(Self);
    with fTrackBars[I] do
    begin
      // Le parent est la classe TForm1, pas la variable Form1!
      Parent        := Self;

      // On definie l'intervalle, la position et l'orientation de la Trackbar
      Max           := 255;
      Min           := 0;
      Position      := 0;
      Orientation   := trVertical;

      // On definie l'apparence de la Trackbar
      SliderVisible := True;
      ThumbLength   := 10;
      TickMarks     := tmBoth;

      // On definie un Tag different pour differencier les Trackbar
      Tag           := I;

      // On definie la position et dimension de la Trackbar
      SetBounds(12 + (126 * (I - 1)), 184, 25, 265);

      // On assigne finalement le gestionnaire d'evenement
      OnChange      := DoTrackbarChange;
    end;

    // Panels qui servent de gauge quantitative de couleur R,G ou B
    fPanels[I] := TPanel.Create(Self);
    with fPanels[I] do
    begin
      // Le parent est la classe TForm1 et non la variable Form1
      Parent     := Self;

      // On definie la police, identique a celle de Panel3
      Font       := Panel3.Font;

      // Le blanc ressort bien sur du rouge, du vert ou du bleu pur.
      Font.Color := clWhite;

      // On definie la position et dimension du Panel
      SetBounds(32 + (126 * (I - 1)), 184, 100, 260);
    end;
  end;

  // Initialise les couleurs, texte, position et aspect
  Initialize;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var N : integer;
begin
  // Liberation des objets créés dynamiquement
  for N := 3 downto 1 do
  begin
    // Liberation des Panels
    fPanels[N].Free;
    // Liberation des TrackBars
    fTrackBars[N].Free;
  end;
  // Liberation de la ComboBox
  fComboBox.Free;
end;

procedure TForm1.DoTrackbarChange(Sender: TObject);
var I : integer;
begin
  // Changement de la couleur R, G ou B
  I := (Sender as TTrackBar).Tag;
  if I in [1..3] then
  begin
    { un simple Not suffit pour inverser la valeur de position
      de la Trackbar en couleur valide.
      Not byte(N) = 255-N
    }
    fMagicColor.RGBA[I] := not byte(fTrackBars[I].Position);
    Initialize;
  end;
end;

procedure TForm1.DoComboChange(Sender: TObject);
var I : integer;
begin
  // Changement du formatage texte de la couleur
  I := (Sender as TComboBox).ItemIndex;
  if I <> -1 then
  begin
    fColFmt := I;
    Initialize;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Memorisation de la couleur dans le presse-papier
  Clipboard.Clear;
  Clipboard.AsText := GetColorFmt;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  // Fermeture du programme
  Close;
end;

end.

Commentaire de fredelem le 08/06/2009 11:35:32 10/10

    J'apprécie beaucoup ce programme. Une remarque tout de même: les trackbars sont tellement fines qu'il m'a fallu du temps pour les apercevoir. Je pense que ça a été le cas pour d'autres et ça explique qu'il n'y ait pas eu beaucoup de commentaires.
    Et par ailleurs, chez moi. le formulaire est invisible. Je peux le charger sous forme de fichier .dfm et le voir sous forme de lignes de code mais si j'appuie sur Alt-F12, il disparait. Par quel tour de magie as-tu fait ça ?

Commentaire de Toidil le 09/06/2009 15:27:51

Merci à f0xi, c'est une grande amélioration que tu proposes, je vais étudier cette Unit qui me fera progresser dans Delphi.
fredelem, Je n'ai mis aucune magie, d'ailleurs je n'ai pas compris ta remarque sur la magie. C'est vrai que les trackbars sont très discrets, mais je n'ai rien trouvé de mieux pour faire évoluer les rapports des couleurs de bases.

Commentaire de fredelem le 09/06/2009 16:36:35

   Si tu veux avoir une idée de ce qui se passe chez moi, remplace la ligne {$R *.dfm}  par (* $R *.dfm*),
sauvegarde, charge un autre programme puis reviens à ton programme. Appuie sur F12 pour voir si le formulaire apparait.
   Je connaissais ce tour de magie sous cette forme mais avec ton programme, je n'ai pas besoin de faire quoi que ce soit, le formulaire est totalement invisible.
    Si je trouve la clé du mystère, je te le dirai.

Commentaire de fredelem le 27/10/2010 20:21:43

   J'ai trouvé pourquoi ton formulaire était invisible. Quand je regarde le fichier nuancier.dfm, je vois que la form1 commence par left=1020.  Evidemment, avec un écran qui fait 1024 pixels, le formulaire va se cacher tout au bout à droite et il est très difficile de le voir.
   J'ai remplacé par "left = 400", le formulaire n'est plus invisible.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

comparatif paradox et access [ par laurent ] Salut,Pour l'instant j'utilise dans mon programme des bases paradox. Est-ce que l'utilisation de bases access seraient plus rapide et plus stable ?Si Utilisation des Tadoquery [ par clyde ] qq 'un connait il l'utilisation des Tadoqueryparce que y a pas de pb pour integrer mon code SQL mais je n'arrive pas à appliquer ma requêteà un objet Protection des applications et utilisation du registre au lieu d'un fichier INI [ par apz ] Salut,Pour proteger mon appli. j'ai utilisé un fichier ini (Limite d'utilisation)le code pour ecrire :// var publique fEmplacement : string;Str0, Str Utilisation de PostgreSQL [ par golgoth ] Bonjour,Je suis à la recherche d'un exemple de code utilisant PostgreSQl en base de données.Donc si quelqu'un a des exemples...Merci d'avance--------- Utilisation de TBatchMove [ par apz ] Salut a tous, j'ai sur une machine des tables en *.dbf et pour les utliser il faut les transformer en *.db en utilisant le composant TBatchMove ! est- comment utilisation de GUI [ par CrAZyBoY ] salut!! j'ai une belle image j'aimme faire en delphi avec GUI voila l'URL de l'image:http://www.ifrance.com/plzgft/14.gifquelquen peux me aidéMerci D' blevel-like sur un graphisme en 3 couleurs [ par damanix ] Bonjour, Je cherche à faire un blevel-like sur un graphisme - en 3 couleurs, mettons blanc, gris, noir, et à les remplacer respectivement par clBtnHig Utilisation du composant TCanvas3D sous C++ Builder [ par naikon ] Bonjour,Je ne programme pas sous C++ Builder depuis tres longtemps et je tombe sur un probleme idiot.(et comme ca fait une heure que je me prends la t utilisation BD [ par moustakiz ] Bonjour,qi une appliccation utilise une base de données access2000, est il nécessaire que le poste client possède Access2000?merci beaucoupmoustakiz [réseau]utilisation en réseaux d'un prog utilisant 1 base IB [ par lnicos ] Voilà, j'ai un logiciel utilisant une base IB, qui va être utilisée par plusieurs personnes à travers un réseau local, mais j'aimerais qu'ils aient to


Nos sponsors


Sondage...

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 7,519 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales