begin process at 2010 02 10 10:45:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Delphi

 > 

Archives

 > 

Graphique

 > 

Dégradé Lissé


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Dégradé Lissé

lundi 12 septembre 2005 à 23:00:38 | Dégradé Lissé

sokoban

Bonjour,

Je voudrais savoir comment je peux faire un dégradé vraiment lisse (smooth gradient) dans un TImage. J'ai réussi à faire un petit bout de code qui fait passer du jaune au bleu en passant par autant de variantes qu'il y a de lignes dans mon TImage. Pourtant, le résultat n'est pas parfait. Globalement, ça dégrade bien, mais y'a comme un effet de lignes par dessus mon truc...

Voici ma fonction, si qqn connait un algorithme un peu plus performant, ça me brache bien !

procedure TFRMMain.CalculerGradient;
var
  i, nColor1, nColor2, nColor3: integer;
  r1, g1, b1, r2, g2, b2, r3, g3, b3: integer;
begin
  Image1.Picture.Bitmap.Width := Image1.Width;
  Image1.Picture.Bitmap.Height := Image1.Height;

  nColor1 := clYellow;

  r1 := GetRValue(nColor1);
  g1 := GetGValue(nColor1);
  b1 := GetBValue(nColor1);

  nColor2 := clBlue;

  r2 := GetRValue(nColor2);
  g2 := GetGValue(nColor2);
  b2 := GetBValue(nColor2);

  for i := 0 to Image1.Height do
  begin
    r3 := Trunc(((Image1.Height - i) * r1)/Image1.Height + (i * r2)/Image1.Height);
    g3 := Trunc(((Image1.Height - i) * g1)/Image1.Height + (i * g2)/Image1.Height);
    b3 := Trunc(((Image1.Height - i) * b1)/Image1.Height + (i * b2)/Image1.Height);

    nColor3 := RGB(r3, g3, b3);
    Image1.Canvas.Pen.Color := nColor3;
    Image1.Canvas.MoveTo(0, i);
    Image1.Canvas.LineTo(Image1.Width, i);
  end;
end;

Ghislain "Sokoban" Martin
http://perso.wanadoo.fr/sokoban

lundi 12 septembre 2005 à 23:02:09 | Re : Dégradé Lissé (avec code lisible !!)

sokoban

procedure TFRMMain.CalculerGradient;
var
  i, nColor1, nColor2, nColor3: integer;
  r1, g1, b1, r2, g2, b2, r3, g3, b3: integer;
begin
  Image1.Picture.Bitmap.Width := Image1.Width;
  Image1.Picture.Bitmap.Height := Image1.Height;

  nColor1 := clYellow;

  r1 := GetRValue(nColor1);
  g1 := GetGValue(nColor1);
  b1 := GetBValue(nColor1);

  nColor2 := clBlue;

  r2 := GetRValue(nColor2);
  g2 := GetGValue(nColor2);
  b2 := GetBValue(nColor2);

  for i := 0 to Image1.Height do
  begin
    r3 := Trunc(((Image1.Height - i) * r1)/Image1.Height + (i * r2)/Image1.Height);
    g3 := Trunc(((Image1.Height - i) * g1)/Image1.Height + (i * g2)/Image1.Height);
    b3 := Trunc(((Image1.Height - i) * b1)/Image1.Height + (i * b2)/Image1.Height);

    nColor3 := RGB(r3, g3, b3);
    Image1.Canvas.Pen.Color := nColor3;
    Image1.Canvas.MoveTo(0, i);
    Image1.Canvas.LineTo(Image1.Width, i);
  end;
end;


Ghislain "Sokoban" Martin
http://perso.wanadoo.fr/sokoban

mardi 13 septembre 2005 à 22:19:43 | Re : Dégradé Lissé

sokoban

En gros, ce que je cherche à obtenir, ce sont des dégradés aussi beaux que ceux de PhotoShop et autres OpenGL !
Mais apparemment, les fonctions GetRValue, GetGValue, GetBValue et RGB associées à une simple fonction linéaire ne suffisent pas...

Ghislain "Sokoban" Martin
http://perso.wanadoo.fr/sokoban



Cette discussion est classée dans : height, image1, dégradé, ncolor1, ncolor2


Répondre à ce message

Sujets en rapport avec ce message

Mon image refuse de se redimensionner [ par Jean_Jean ] <v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsiz Roulette sur Timage [ par rivaud_renee ] J'ai posé un Timage sur un panel. Je déplace l"image sans problèmes ( voir code ci-après ); mais je souhaiterai également y faire un zoom ( plus et mo Défiler un texte sous dorme de pixel [ par lusitano69 ] Bonjour voici mon probléme j essaye de faire une sorte de affichage de texte en Leds. Le probléme pour tester c est que j arrive pas a faire défiler u problème pour passer une image en noir et blanc [ par ender27 ] Bonjour à tous,Je suis un débutant en Delphi (je posséde la version 5).Je dois réaliser un programme de reconnaissance de caractères pour mon école.Le Question Mathématique [ par ELCouz ] Bonjour,J'aimerais savoir quel formule je dois utiliser pour faire un effet realiste quand je click sur un bouton pour allonger la form en height ?Es- Image scale avec Scrallbar ?!!!! [ par MiniProgramer ] Salutcoment puis je changer les Demonssion de Graphic avec un Scrollbar ? procedure TForm1.ScrollBar1Change<span c Coment peut on change L'argeur de Graphic dans L' Image ? [ par MiniProgramer ] Salutsi j'essaye de modifier la largeur de Graphic a l' Image :beginif Clipboard.HasFormat(CF_BITMAP) thenbeginImage1.AutoSize:=True;Image1.Picture.A comme je peux dessiner des flèches avec Delphi ? [ par MiniProgramer ] Salutcomme je peux dessiner des flèches avec Delphi ?avec Delphi je peut dessiner 4 oubien 5 chauses comme Rectangle, Ligne, ...Image1.Canvas.<span cl Scrollbar.Max:=Image1.Width*2 ! Is it possible ? [ par MiniProgramer ] salutje voudrais faire le Scrollbar max et le Scrollbar Min comme ça :scrollbar1.Max:=Image1.Width * 2;scrollbar1.M


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 : 0,577 sec (4)

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