[RESOLU] Fonction RGB ou valeur couleur en hexadécimal ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Micoute
Messages : 2583
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: [RESOLU] Fonction RGB ou valeur couleur en hexadécimal ?

Message par Micoute »

Bonjour à tous, et pourquoi ne pas créer la fonction ABVR(Alpha.i, Bleu.i, Vert.i, Rouge.i) ?
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [RESOLU] Fonction RGB ou valeur couleur en hexadécimal ?

Message par falsam »

Micoute a écrit :Bonjour à tous, et pourquoi ne pas créer la fonction ABVR(Alpha.i, Bleu.i, Vert.i, Rouge.i) ?
Pour quoi faire ? Obtenir une valeur Hexa plus facilement (ça me parrait pas possible) ? ou bien serais tu hors sujet ? ou alors est ce moi qui ne sait plus dans quel état j'erre ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: [RESOLU] Fonction RGB ou valeur couleur en hexadécimal ?

Message par djes »

Ce sujet montre bien qu'il y a un problème de compréhension.

La couleur est envoyée telle quelle aux fonctions de dessin natives du système.

Celles-ci attendent parfois un format RGB, parfois BGR (sur d'anciennes cartes graphiques par ex), parfois avec l'alpha, parfois sans. Il faut aussi penser au passé et au futur. Aujourd'hui les composantes sont sur 8 bits, demain elles seront (comme avec le HDR) sur 32 bits.

Quand on code en C, il faut aller chercher dans des structures de l'OS (ou de l'API graphique) quel est le format à utiliser.

Alors on se dit qu'il faudrait que PB donne quelques informations sur ce qui est attendu, pour formater correctement la couleur (comme avec les fonctions sur la résolution écran...).

Le choix qui a été fait par l'équipe est plus simple, c'est celui des fonctions RGB() et RGBA() : elles formatent correctement la couleur en fonction des composantes.

Donc clairement, si on ne veut pas avoir trop de problème, il est nécessaire d'utiliser ces fonctions. Pour aller plus vite, il est possible de stocker le résultat de RGB() dans une variable.
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: [RESOLU] Fonction RGB ou valeur couleur en hexadécimal ?

Message par Fig »

DrawingBufferPixelFormat()

ca existe non ?
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: [RESOLU] Fonction RGB ou valeur couleur en hexadécimal ?

Message par djes »

Fig a écrit :DrawingBufferPixelFormat()

ca existe non ?
Oui, et ça permet de belles optimisations quand on fait de l'accès direct ! Par contre, il faut se casser un peu la tête.

L'utilisation des fonctions est quand même plus pérenne : si un nouveau format apparaît (128 bits par exemple), DrawingBufferPixelFormat() va renvoyer une constante inconnue, et le code qui ne prend en charge que les formats actuels risque de ne plus être compatible. Il faudra se replonger dedans et l'adapter.
TimProd
Messages : 10
Inscription : sam. 18/oct./2014 5:01

Re: [RESOLU] Fonction RGB ou valeur couleur en hexadécimal ?

Message par TimProd »

Encore merci pour toutes ces contributions.

Les arguments de la compatibilité avec de futures versions de PureBasic et des évolutions matérielles ou de SE l'emportent.

Ce sera donc RGB.

Priorité aux facilités de maintenance sur la durée, j'aurai de toutes façons plein d'autres choses à optimiser.

Cordialement.
Répondre