Drole de truc (jl'ai pas fait exprés!!!)

Contenu du snippet

Cherchant a crée une "lumiere" sur un bitmap, et n'y arrivant pas je suis tombé sur des genres de fractales... g hesité a les mettre ici mais sa fait joli lol... sinon sa sert a rien :)

Source / Exemple :


//Les Types a rajouters
TRGBTripleArray = array[0..32767] of TRGBTriple;
  pRGBTripleArray = ^TRGBTripleArray;

procedure MakeLight(X,Y:integer;Intensity:byte;Bmp:TBitmap);
        var
        I,J:integer;
        RowOriginal: pRGBTripleArray;
        Adding:integer;
        begin
          for I:= X-(Intensity div 2) to X+(Intensity div 2) do begin
          RowOriginal:=bmp.ScanLine[I];

            for J:= Y-(Intensity div 2) to Y+(Intensity div 2) do begin
            adding:=((Intensity div 2)-sqr(J-Y)-sqr(I-X)) xor 255;

             if RowOriginal[J].rgbtRed+adding > 255 then
             RowOriginal[J].rgbtRed:=255 else
             inc(RowOriginal[J].rgbtRed,adding);

             if RowOriginal[J].rgbtGreen+adding > 255 then
             RowOriginal[J].rgbtGreen:=255 else
             inc(RowOriginal[J].rgbtGreen,adding);

             if RowOriginal[J].rgbtBlue+adding > 255 then
             RowOriginal[J].rgbtBlue:=255 else
             inc(RowOriginal[J].rgbtBlue,adding);

            end;
          end;
        end;

//Vous pouvez changer adding par differente fonction
//ex:
//un triangle
adding:=((Intensity div 2)-sqr(J-Y)+sqr(I-X)) xor 255;
//un genre de viseur transparent qui illumine...
adding:=(trunc(Intensity-sqrt(sqr(J-Y)+sqr(I-X)))) and 192;
//Autre et Bizzare:
adding:=-(trunc(sqrt(sqr(J-Y)+sqr(I-X))));
adding:=((sqr(Y-J)-sqr(X-I)))-intensity;
adding:=(trunc(Intensity+sqr(Y-J)-sqr(X-I)));

Conclusion :


Voila donc SVP trouvé moi la fonction qui permet de creer un cercle d'intensité forte au centre et null au bout lol je vous fremercie ;)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.