Aide - Recherche - Membres - Calendrier
Version complète : couleur
Les Forums de PalmAttitude.org > GENERAL PalmOS > Développement sous PalmOS > Développement HB++
hugonoof
J'ai un rectangle defini directement comme ca:

CODE
Rectangle 0, 0, cx, cy, hbRectBorderSolid+hbRectFillSolid


Comment puis je faire pour modifier la couleur de fond du rectangle, ainsi que la couleur des bordures?

Merci d'avance.
Payalba
BackColor
ForeColor
TextColor
hugonoof
CITATION(Payalba @ 25/11/2006 à 08:09 ) *
BackColor
ForeColor
TextColor


Oui mais a quoi on les applique? Exemple?
snark
Ils s'appliquent à l'object Display courant, le même utilisé par l'appel à Rectangle. Donc soit un Form ou un Bitmap.
aldweb
Tiens, hugonoof, voici un pseudo qui me dit quelque chose.
C'est un mec qui est venu poster une question sur mon forum iziBasic.
Puis, pas de réponse, pas merci, pas m*rde... Pas cool ! siffle.gif

Alors, vas-y, lache toi sur PalmAttitude à la place ! ninja.gif

@+
aldweb
Payalba
Pour la forme tu peut faire

me.backcolor = 123456

si tu as une image bmp du nom de b

b.backcolor

Regarde l'aide et les exemples, cela t'aideras
hugonoof
CITATION(aldweb @ 25/11/2006 à 16:13 ) *
Tiens, hugonoof, voici un pseudo qui me dit quelque chose.
C'est un mec qui est venu poster une question sur mon forum iziBasic.
Puis, pas de réponse, pas merci, pas m*rde... Pas cool ! siffle.gif

Alors, vas-y, lache toi sur PalmAttitude à la place ! ninja.gif

@+
aldweb


Oui s'etait effectivement moi, mais il me semble que cette phrase n'etait pas pour les chiens mais bien pour toi
CITATION
Merci d'avance, et félicitation pour ce site.
, donc apprend a lire :p

Maintenant si je n'ai pas relancé c'est tout simplement parce que, ta reponse etait clair, a savoir non izibasic ne gere pas cela, je me suis donc tourné vers HB++, et puis finalement cela me semble bien plus accéssible.



CITATION(Payalba @ 25/11/2006 à 20:08 ) *
Pour la forme tu peut faire

me.backcolor = 123456

si tu as une image bmp du nom de b

b.backcolor

Regarde l'aide et les exemples, cela t'aideras


En faite si je comprend bien si j'ai un rectangle et une line sur mon form ou mon bmp, je ne peux pas modifier le backcolor ou les bordures d'un et sans modifier l'autre.
Il faudrait donc si je veux un carré bleu et un carré rouge, que chacun soit sur un bmp différent?
Payalba
CITATION(hugonoof @ 27/11/2006 à 10:53 ) *
En faite si je comprend bien si j'ai un rectangle et une line sur mon form ou mon bmp, je ne peux pas modifier le backcolor ou les bordures d'un et sans modifier l'autre.
Il faudrait donc si je veux un carré bleu et un carré rouge, que chacun soit sur un bmp différent?


Mais non

Tu fais par exemble



CODE
backcolor = 123456

rectangle 0,10,20,30,...



backcolor = 8888888

rectangle 30,40,60,80,...


Il suffit d'initialiser les couelurs avant d'ecrire ou dessiner
hugonoof
Ah ok, bein maintenant je comprend mieux.
C'est etrange comme façons de programmer, je vais aller tester ca.
Merci
Payalba
Pourquoi est ce etrange ?
Patrice
CITATION(Payalba @ 27/11/2006 à 20:10 ) *
Pourquoi est ce etrange ?
Bonne question, il y a en effet beaucoup d'environnements où cela fonctionne de la même manière (i.e. préparer le contexte graphique avant de "dessiner")...
Orabig
Moi aussi, je voudrais bien savoir pourquoi c'est étrange... huh.gif
Ca fait plus de 20 ans que je programme (sic, ca me rajeunit pas), et ca a toujours ressemblé à quelque chose comme ça....

Mais bon, à mon avis, le monsieur il a sa réponse, et c'est pas sur qu'il repasse dans le coin pour éclairer nos lanternes... siffle.gif icon_lol2.gif
aldweb
CITATION(hugonoof @ 27/11/2006 à 10:53 ) *
Oui s'etait effectivement moi, mais il me semble que cette phrase n'etait pas pour les chiens mais bien pour toi
CITATION
Merci d'avance, et félicitation pour ce site.

, donc apprend a lire :p


No souci, ne t'énerve pas, pas la peine d'être insultant, je n'ai pas de chien à la maison et je crois à peu près savoir lire ! anim_grin.gif
Un petit accusé de réception aurait juste été apprécié. ninja.gif


Nonobstant ceci, HB++ est un excellent choix ( n'est-ce pas JPA ? wub.gif ) et le plus important était bien de trouver l'outil de dev qui te convienne. Amuse toi bien avec, et vu ton activité ici, ça y va bien ! anim_grin.gif

@+
aldweb
olivier101
CITATION(Patrice @ 27/11/2006 à 20:43 ) *
Bonne question, il y a en effet beaucoup d'environnements où cela fonctionne de la même manière (i.e. préparer le contexte graphique avant de "dessiner")...

La réponse est simple: si la notion de contexte graphique n'existait pas, chacune des fonctions graphiques primitives devrait prendre tout un tas de paramètres (largeur de ligne, couleur de fond, couleur de remplissage, pointillé, style de début, style de fin, rectangle de clipping, style d'overlap, etc.) ce qui serait vite pénible pour le programmeur en plus d'être peu efficace.
Patrice
Olivier, la question n'est pas de savoir pourquoi cela fonctionne comme ça mais plutôt pourquoi notre ami trouve cela bizarre...
hugonoof
CITATION(Orabig @ 27/11/2006 à 20:50 ) *
Moi aussi, je voudrais bien savoir pourquoi c'est étrange... huh.gif
Ca fait plus de 20 ans que je programme (sic, ca me rajeunit pas), et ca a toujours ressemblé à quelque chose comme ça....

Mais bon, à mon avis, le monsieur il a sa réponse, et c'est pas sur qu'il repasse dans le coin pour éclairer nos lanternes... siffle.gif icon_lol2.gif


Bein tous les langages que je connais fonctionne avec des propriétés qui s’appliquent à un objet, ainsi on peu changer les propriétés de l'objet sans toucher à l'objet lui même.
Si on part du principe que le rectangle dans HB++ est un objet alors, on assigne la couleur rouge au contexte, on dessine le rectangle (qui sera donc dessiner en rouge), et si après on veut changer des propriétés du rectangle (en bleu par exemple), on doit donc changer le contexte en bleu, et après on doit redessiner l'objet, et donc pour moi c'est un nouvel objet, on ne peut donc pas modifier les propriété de l'objet et faire un refaire un paint().

Si on prend des langages, comme java, c++, ou encore l'un des plus utiliser CSS, on assigne bien des propriétés a un objet, et non a un contexte.
Dans un langage Objet, une fois l'objet déclaré, on assigne un certain nombre de méthode a cet objet, et c’est ces méthodes qui vont changer l’objet indépendamment de ce qui se passe autour.
En vb .net, on passe par un pseudo contexte et effectivement on applique les propriétés a ce contexte mais la différence, c’est qu’on applique spécifiquement ce contexte a l’objet, ainsi le contexte devient une propriété de l’objet :
myGraphics.DrawRectangle(myPen, 100, 50, 80, 40), myPen etant le contexte ou on aura décider de dessiner en Rouge.

En hb++, si j'ai bien compris, si on crée deux rectangles, en utilisant exactement la même ligne de code pour le créer, si le contexte a changer entre les deux on aura deux rectangle différents, je trouve ca étrange car encore une foi je ne connais aucun autre langage qui procède ainsi, et attention, je n'ai pas dit que s'était pas bien, j'ai juste dit que s'était étrange.

En java : rectangle.changeColor(‘Red’)
En basic : LINE (X,Y),couleur
En picwin : /drawrect-ihnrfed @[win] [couleur] [taille] [x y w h]
En SDL : SDL_FillRect(sEcran,&rect,SDL_MapRGB(sEcran->format,R,G,B))
En javascript : objR1.couleur = "rouge"


Ceci etant, je viens de tester, et c’est vrai que ca a l’air plus simple, et Olivier101 a raison, quand la notion de contexte n'existe pas, chacune des fonctions graphiques primitives devrait prendre tout un tas de paramètres, et ca alourdi terriblement les packages du langage.
Patrice
Il ne s'agit pas de créer des objets mais de dessiner des formes ! De ce point de vue, ton exemple en java ne correspond donc pas à la même fonction (et je ne sais pas pour les autres langages).
hugonoof
CITATION(Patrice @ 28/11/2006 à 09:49 ) *
Il ne s'agit pas de créer des objets mais de dessiner des formes ! De ce point de vue, ton exemple en java ne correspond donc pas à la même fonction (et je ne sais pas pour les autres langages).


Certe je suis d'accord mais dans les deux cas on dessine un Rectangle.
Pierre R.
avoir deux objets : rectangle et contexte n'est pas idiot. Cela permet de respecter un design pattern de responsabilité. Chacun a une existence légitime. L'autre alternative serait de faire hériter toutes ces propriétés/méthodes à ton rectangle, mais aussi aux cercles, triangles, ... ce qui n'est guère mieux si tu permets de modifier bcp de chose dans ton contexte.
cela dit, ce n'est pas très important.
Orabig
Je comprend mieux ce que tu voulais dire hugonoof, mais là où tu fais une erreur, c'est qu'il n'y a pas d'objet rectangle en HB++ (et à ma connaissance, il n'y en a pas non plus en Swing/Java par exemple).

Tu as juste la possibilité de "dessiner" un rectangle sur l'objet bitmap (qui lui a son contexte de dessin). Mais une fois qu'il est dessiné, ce rectangle n'a pas d'existance propre, qui permettrait de le différencier du second rectangle que tu as dessiné à coté.

Bref, on quadracapiloctome beaucoup pour pas grand chose... ptdr.gif
Bonne continuation dans le monde de HB++ en tout cas. cool.gif
hugonoof
CITATION(Orabig @ 28/11/2006 à 16:14 ) *
Je comprend mieux ce que tu voulais dire hugonoof, mais là où tu fais une erreur, c'est qu'il n'y a pas d'objet rectangle en HB++ (et à ma connaissance, il n'y en a pas non plus en Swing/Java par exemple).

Tu as juste la possibilité de "dessiner" un rectangle sur l'objet bitmap (qui lui a son contexte de dessin). Mais une fois qu'il est dessiné, ce rectangle n'a pas d'existance propre, qui permettrait de le différencier du second rectangle que tu as dessiné à coté.

Bref, on quadracapiloctome beaucoup pour pas grand chose... ptdr.gif
Bonne continuation dans le monde de HB++ en tout cas. cool.gif


Je suis tout a fait d'accord avec toi, c'est pour ca, que j'ai commencé par :"si on considere le rectangle comme un objet", ceci etant comme tu dis si bien "trop de blabla tue le blabla ...", le reste c'est qu'une question de point de vue, de tout les façons etant dans les gros systeme IBM, MVS, PACBASE, maintenant tous les autres langages me paraissent évolués icon_cry.gif

Pendant que j'y suis icon_biggrin.gif , peux t'on dessiner une ligne en pointillé ? et comme je suppose que non, il y a t'il une astuce?
lolo
Peut etre qu'il faut jeter un coup d'oeil a la propriete Pattern, dans "Home > Language Reference > Classes > Display".
Ce n'est pas tres flexible, mais pour dessiner une ligne en pointiller ça suffit.

Le sample "PatternEditor" (voir repertoire sample) est un bon exemple sourire.gif
snark
Je ne suis pas sûr que Pattern s'applique à Line.
Patrice
CITATION(snark @ 28/11/2006 à 17:12 ) *
Je ne suis pas sûr que Pattern s'applique à Line.
De mémoire, si. Du moins au niveau des API PalmOS...
olivier101
CITATION(Orabig @ 28/11/2006 à 16:14 ) *
Je comprend mieux ce que tu voulais dire hugonoof, mais là où tu fais une erreur, c'est qu'il n'y a pas d'objet rectangle en HB++ (et à ma connaissance, il n'y en a pas non plus en Swing/Java par exemple).


http://java.sun.com/j2se/1.5.0/docs/api/ja.../Rectangle.html

CITATION(Patrice @ 28/11/2006 à 07:01 ) *
Olivier, la question n'est pas de savoir pourquoi cela fonctionne comme ça mais plutôt pourquoi notre ami trouve cela bizarre...

j'explique pour qua ça paraisse moins bizarre sleep.gif
jpa
CITATION
c'est pour ca, que j'ai commencé par :"si on considere le rectangle comme un objet",



non, le rectangle n'est pas un objet, d'ailleurs la methode Rectangle appartient a l'objet Display. Si on veut un objet Rectangle, il suffit de le creer wink.gif ...On peut aussi creer un usercontrol style ucShape:

http://www.handheld-basic.com/forum/viewto...php?p=8344#8344

En fait, comme le disait Patrice, il faut comparer ce qui est comparable, ce qui n'etait pas le cas.


JPA
The HB++ team
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.