Couleur d'un Pixel

Signaler
Messages postés
1
Date d'inscription
dimanche 7 mars 2004
Statut
Membre
Dernière intervention
14 juillet 2004
-
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
-
Bonjour je voudrais savoir comment peut on changer la couleur d'un pixel
merci

Le mépris de ceux qui ne savent pas n'est pas une preuve de savoir

7 réponses

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
eu... tu crois pas que ca manque de precisions ?

os ? compilo ? bibliotheque graphique ?
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
125
S'il s'agit de prog sous Windows en utilisant des contexte d'affichage, il s'agit de la fonction SetPixel.

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
Messages postés
21
Date d'inscription
lundi 24 mai 2004
Statut
Membre
Dernière intervention
25 mai 2005

douggy :

Comme l'a souligné un ami la haut, ton message manque un peu de precision. Mais, je vais quand meme essayer d'y repondre sans celle-ci.

Pour changer la couleur par defaut d'un numero de couleur(ex: couleur numero 30,63,14,20,255,140 et tout le saint glin-glin.),
donc, il faudrait changer la palette de couleur par defaut de la carte vidéo. La palette est un tableau de couleur par defaut memorisé dans la carte video de votre ordinateur(c'est une sorte de circuit special de la carte video).
Supposons que la fonction qui place votre pixel sur l'ecran soit :

putpixel(int x,int y,unsigned char color);
//Je suppose que vous connaissez le langage C
je suppose que vous savez deja comment placer un pixel sur l'ecran(d'ailleurs, vous en avez deja fait la preuve).

quand vous faites pupixel(20.30,15) i-ème fois, on obtient la meme couleur. Donc, si on veut changer la nuance de couleur afin d'ajouter la sienne. Voila ce qu'on doit faire.

Avant tout, il faut savoir que la palette se compose de 256 indexes de couleurs(0 à 255) composées chacuns( les indexes) de 3 combinaisons de couleur: Rouge, Vert, Bleu->(RVB) ou Red,Green,Blue->(RGB).

Pour changer la couleur il suffit d'acceder au port d'ecriture de la carte vidéo ayant pour adresse en hexadecimale : 3C8.
Il y a une fonction appelée outportb() de la bibliotheque dos.h qui vous permettra d'envoyer des donnees sur un port:

void outportb(int numero_port,unsigned char valeur)

Pour signaler a la carte video qu'on va y ecrire des donnees, il faut passer par ce port. Donc, la carte video vous donnera acces a l'ecriture en memorisant ce que vous voulez ecrire sur un port-variable(espace de stockage),ayant pour numero : 3C9.
(*Je vous conseille maintenant de respirer un bon souffle.OAAFFFF!*)

Pour y arriver,on envoi les donnees dans l'ordre suivant: l'index de couleur dans 3C8, puis la quantite de couleur rouge dans 3C9, la quantité verte dans 3C9, enfin la quantité bleue dans 3C9. D'ou l'expression RGB ou RVB en francais, car la carte video accepte les couleurs dans l'ordre rouge, vert, bleue.

Practica:

on va ecrire la fonction:
rappelons le prototype de outporb

void outportb(int numero_port,unsigned char valeur)
//se trouve dans dos.h

void setpal(unsigned char couleur,unsigned char r,unsigned char g,unsigned char b)
{
outportb(0x3C8,couleur);//sollicite l'ecriture dans
//l'index de couleur indiquee
outportb(0x3C9,r);//on envoie le rouge
outportb(0x3C9,g);//le vert
outportb(0x3C9,b);//le blue
}

//les 0x precedes des nombres, signalent que ces derniers sont
//des nombres hexadecimaux en langage C.

cette fonction changera la couleur d'affichage par defaut d'une couleur de pixel avec notre propre nuance rouge, vert, bleue.
Mais, les nuances vont de 0 à 63 pour chacune des couleurs(64 couleur en total).

prenez le temps de changer la couleur dans une boucle for.

ex:

void changepal()
{
int i;
for(i=0;i<=255;i++)
setpal(i,random(64),random(64),random(64));

}

//cette petite fonction change les nuances de RVB avec des quantites de couleur RVB alétoire.

Placer la procedure changepal() avant celle qui place les pixels et vous en verrez l'effet.

Questions, ou commentaires,ecrivez moi à :
douggynix@yahoo.fr
Messages postés
688
Date d'inscription
jeudi 26 décembre 2002
Statut
Membre
Dernière intervention
19 mai 2005

voila la fonction pour changer le couleur d'un pixel et
SetPixel pas setpixel pour mieux comprendre va voir ma source que j'ai penser avanthier il est nomé Createur demask il remplace la couleur indiquet par uen autre
see you
Life is Short 8-)
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
douggyfresh ==> interessant, seulement dépassé car possible uniquement en mode reel et reservé a ms-dos
impossible d'acceder a la carte video sans une api (opengl, d3d...) supporté par les drivers
Messages postés
21
Date d'inscription
lundi 24 mai 2004
Statut
Membre
Dernière intervention
25 mai 2005

douggy:

A djl:

je vous remercie quand meme.

Selon mes recherches, je pense qu'il est possible d'acceder a la carte video sans l'apport de ces librairies et pilotes graphiques.
Car, la carte n'est qu'un circuit specialise de l'ordinateur. Donc pour y acceder, il faut connaitre son numero de port.

Moi, j'en ai l'habitude. Je pense que les routines d'opengl,d3d,bgi etc.. utilisent cette meme methode. Mais, il essaie de vous masquer ces informations afin de faciliter la comprehension des programmeurs debutants. et afin que vous pensiez a resoudre d'autres problemes au lier de s'y miser.

Je vous remercie pour cette remarque. Et si vous n'etes pas d'accord. fais moi parvenir votre reponse sur le forum.

Votre texte ICI
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
les interruptions logiciels ne sont plus possibles avec les noyaux nt et le mode protegé

comme je l'ai dit, opengl et direct3d communique avec la carte graphique par le biais des drivers (ta carte graphique possede ses propres drivers opengl et direct3d)