Soyez le premier à donner votre avis sur cette source.
Vue 12 412 fois - Téléchargée 1 567 fois
procedure former(Obj:tform;img:tbitmap;couleur:tcolor); var x, y, reg, regtemp, debut, fin:integer; EtaitTrans, first:boolean; begin obj.height:=img.height; //on adapte les obj.width:=img.width; //dimensions de la fiche first:=true; //c'est pour savoir si on a deja créé une région : voir CombineRgn (nécessite une region non vide) for y:=1 to img.height do begin debut:=1; //debut=debut de la zone non- transparente fin:=1; //fin =fin de la zone non- transparente EtaitTrans:=true; //EtaitTrans, c'est pour savoir si le pixel examiné précédemment était transparent ou pas for x:=1 to img.width do begin if img.Canvas.Pixels[x,y]=couleur then begin//si le pixel est transparent if EtaitTrans=false then begin //et que le précédent ne l'etait pas fin:=x-1; //le dernier pixel non transparent etait le precedent if first=true then begin //si c'est la 1°region qu'on crée: reg:=CreateRectRgn(debut,y,fin+1,y+1);//on la crée first:=false; //la prochaine ne sera plus la premiere end else begin //si c'est pas la premiere region regtemp:=createrectrgn(debut,y,fin+1,y+1);//on en crée une temporaire CombineRgn(reg, reg, regtemp, rgn_or);//on l'ajoute à reg qui sera la region finale avec rgn_or (voir autres possibilités dans l'aide) deleteobject(regtemp); //on supprime la region temporaire end; end; EtaitTrans:=true; end else begin //le pixel n'est pas transparent if EtaitTrans=true then debut:=x; //ben oui rien que ca EtaitTrans:=false; if x=img.width-1 then //on arrive au dernier point de la ligne if first=true then begin //si c'est la 1°region qu'on crée: reg:=CreateRectRgn(debut,y,x,y+1); //on la crée first:=false; //la prochaine ne sera plus la premiere end else begin //si c'est pas la premiere region regtemp:=createrectrgn(debut,y,x,y+1); //on en crée une temporaire CombineRgn(reg, reg, regtemp, rgn_or); //on l'ajoute à reg qui sera la region finale avec rgn_or (voir autres possibilités dans l'aide) deleteobject(regtemp); //on supprime la region temporaire pour rester propres (si on ne le fait pas, ca se fait autom. qd on ferme l'application) end; end; end; end; SetWindowRgn(Obj.handle, reg,true); //on applique la region finale ! end;
29 avril 2008 à 18:03
10 pour ce code
14 mars 2008 à 18:04
Incanus peut-tu me dire comment on rend une fiche transparente à une couleur (j'utilise Delphi 3, je crois que les fiches ne peuvent pas encore faire ca), et si elles peuvent, pourrais-tu me dire si c'est une propriété ? :x
Cordialement, Bacterius ....
17 janv. 2005 à 22:40
26 juil. 2004 à 15:59
5 oct. 2003 à 21:35
Merci
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.