begin process at 2010 02 10 07:44:21
  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é :1 301 / 145

Auteur : Toidil

Ecrire un message privé
Commentaire sur cette source (4)
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 JEU RAMI DES CHIFFRES SOLITAIRE

 Sources de la même categorie

Source avec Zip Source avec une capture EFFET VITRE ET THUMBNAILS SOUS VISTA par Bacterius
Source avec Zip Source avec une capture ANAGLYPHEUR OU COMMENT VOIR EN RELIEF LES STÉRÉOSCOPES ANCES... par jfs59
Source avec Zip Source avec une capture DÉFORMER UNE IMAGE AUX DIMENSIONS D'UN QUADRANGLE QUELCONQUE... par FFCAST
Source avec Zip Source avec une capture THREAD ET BITMAP (DESSIN AU CRAYON) par barbichette
Source avec Zip Source avec une capture ÉCRAN DE VEILLE FEU D'ARTIFICE par barbichette

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture JEU DE DÉS ZORG6 par dubois77
Source avec Zip Source avec une capture DOMINOS COULEURS par Debiars
Source avec Zip Source avec une capture AVATARS IN MADNESS par cantador
Source avec Zip DEBIARS CONTRE LES LAPINS CRÉTINS par Debiars
Source avec Zip Source avec une capture CONQUÊTE TERRITORIALE 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.

 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...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 8,393 sec (3)

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