ABCDEFGHIJKLMNOPQRSTUVWXYZ

Signaler
Messages postés
71
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
24 février 2012
-
Messages postés
71
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
24 février 2012
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/12691-abcdefghijklmnopqrstuvwxyz

Messages postés
71
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
24 février 2012

Salut!
J'ai trouvé une unité avec pleins de fonctions graphiques!
J'espère que ça te permettra d'évoluer dans ton projet, à+

Citation:
JanFX v.1.0 FWS 19 Kb 03.07.00 By Jan Verhoeven.
JanFX is a library of 89 bitmap transformation routines like: rotate; smooth resize; filters; make seamless; buttonize; color, focus and light effects; fisheye and twist distortions; alpha blending; plasma and many more.

http://homepages.borland.com/torry/vcl/graphics/effects/janfx.zip (19 ko)
Messages postés
131
Date d'inscription
vendredi 7 juin 2002
Statut
Membre
Dernière intervention
19 janvier 2004

Ce que je te suggère pour obtenir les composantes d'une couleur, c'est d'utiliser un record. Par exemple (pour des couleurs stockées sur 32bits) :
function Convert(Couleur: Cardinal) : TRGBQuad;
begin
Result := TRGBQuad(Couleur);
end;

TRGBQuad est défini dans windows.pas. En utilisant cette méthode, tu évite les opérations logiques.
Pour des couleurs 24 bits => utiliser TRGBTriple.
Messages postés
71
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
24 février 2012

J'ai essayé ta méthode...
Par exemple dans une de mes sources, j'ai remplacé :
Result.h:=WRec(LRec( lin ).hi).hi;
Result.m:=WRec(LRec( lin).hi).lo;
Result.s:=WRec(LRec( lin ).lo).hi;
Result.t:=WRec(LRec( lin ).lo).lo;
par:
Result.h:=Byte( lin AND $FF000000);
Result.m:=Byte( lin AND $00FF0000);
Result.s:=Byte( lin AND $0000FF00);
Result.t:=Byte( lin AND $000000FF);
Et ça ne fonctionne pas! Ai-je fait une erreur?
Messages postés
131
Date d'inscription
vendredi 7 juin 2002
Statut
Membre
Dernière intervention
19 janvier 2004

Inversion : Il suffit de remplacer Ligne^[x] := Ligne^[x] and $00FF0000;
par Ligne^[x] := not Ligne^[x];
Couleurs primaires : remplacer Ligne^[x] := Ligne^[x] and $00FF0000;
par Ligne^[x] or $00FF0000; (déplacer le FF pour obtenir les autres couleurs)
Noir et blanc :
Remplacer :
- TRGBTripleArray = array[Word] of Cardinal;
par TRGBTripleArray = array[Word] of TRGBTriple;
- bmp.PixelFormat := pf32bit;
par bmp.PixelFormat := pf24bit;
- Ligne^[x] := Ligne^[x] and $00FF0000;
par
begin
Ligne^[x].rgbtRed := (Ligne^[x].rgbtRed + Ligne^[x].rgbtGreen + Ligne^[x].rgbtBlue) div 3;
Ligne^[x].rgbtGreen := Ligne^[x].rgbtRed;
Ligne^[x].rgbtBlue := Ligne^[x].rgbtRed;
end;

Pour le N&B avec luminosité, de même en intégrant la formule.

Je pense qu'en convertissant en asm, tu ne gagnerais pas enormément ...
Afficher les 15 commentaires