La toile est cool ! - page 6

 
Vladimir Karputov:

canvas.Rectangle n'est pas un objet, c'est une commande pour dessiner un tas de pixels. C'est comme un coup de feu - une balle part, et bon débarras. Il n'y a pas de retour d'information.

Merci pour le non retour - compris.

Rashid Umarov:

Il existe un article intitulé Exploring the CCanvas class.Mise en œuvre de la transparence des objets graphiques, il devrait y avoir une solution.

Je l'ai consulté 217 fois et il est ouvert maintenant, mais je n'ai pas vu de solution.

J'ai besoin d'un exemple concret de changement de couleur du canevas et du cadre dans OnTick().

Merci !

 
Vitaly Muzichenko:

Merci pour le lien - j'ai compris.

Je l'ai examiné 217 fois, et il est ouvert maintenant, mais je n'ai pas vu de solution.

J'ai besoin d'un exemple concret de changement de couleur du canevas et du cadre dans OnTick().

Merci !

Sur la base de mon code, je suis juste coincé dans le changement de la couleur de la toile et le dessin d'un cadre.

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   static long counter=0;
   counter++;
   if(counter%40==0)
     {
      m_canvas.Erase(ColorToARGB(clrBlue,210));
      m_canvas.Rectangle(10,10,m_canvas.Width()-10,m_canvas.Height()-10,ColorToARGB(clrRed,255));
      m_canvas.Update();
      return;
     }
   if(counter%20==0)
     {
      m_canvas.Erase(ColorToARGB(clrRed,210));
      m_canvas.Rectangle(10,10,m_canvas.Width()-10,m_canvas.Height()-10,ColorToARGB(clrBlue,255));
      m_canvas.Update();
      return;
     }
  }


Comme j'utilise des couleurs avec transparence, j'ai spécifié"COLOR_FORMAT_ARGB_NORMALIZE" lors de la création du canevas :

//--- create canvas
   if(!m_canvas.CreateBitmapLabel("SampleCanvas",5,15,700,300,COLOR_FORMAT_ARGB_NORMALIZE))
Dossiers :
 
Vladimir Karputov:

En me basant sur mon propre code, j'ai simplement changé la couleur de la toile et dessiné un cadre.


Comme j'utilise des couleurs avec transparence, j'ai spécifié"COLOR_FORMAT_ARGB_NORMALIZE" lors de la création du canevas :

Je vais y jeter un coup d'œil maintenant, merci !

Ce que je m'attendais à obtenir - obtenu il y a longtemps, c'est une toile à peine transparente avec un cadre et une sélection, mais maintenant je dois changer les couleurs, ce qui ne fonctionne pas.


 
Vitaly Muzichenko:

Je vais regarder maintenant, merci !

Ce que je m'attendais à obtenir - obtenu depuis longtemps, c'est un canevas à peine transparent avec une bordure et une sélection, mais maintenant je dois changer les couleurs, ce qui ne fonctionne pas.


Le problème vient probablement de ENUM_COLOR_FORMAT (lors de la création du canevas) et de la méthode d'obtention de la couleur.

 
Vitaly Muzichenko:

Dans OnInit, je crée un canevas

Ensuite, je dois changer la couleur à 10:00 en gris dans OnTick et la remettre dans son état d'origine à 11:00.

Ça ne marche pas :

Question :

Comment changer la couleur du canevas et du cadre - aucune référence aux noms d'objets ?

Merci !

J'ai l'impression que vous avez modifié les couleurs.

Quelle est la signification de cette ligne :

ObjectSetInteger(0,"CanvasExamlple",OBJPROP_COLOR,clrNONE);

COLOR_FORMAT_ARGB_NORMALIZE n'a pas besoin de remplir le canevas avec la couleur de fond, mais plutôt de le remplir avec zéro :

canvas.Erase(0);

car cela signifie que la toile est complètement transparente.

Il est également pratique d'utiliser la représentation en 16 couleurs :

par exemple :

0x00000000 - noir entièrement transparent

0xFF000000 - noir opaque

0xFFFFFFFFFF - blanc opaque

0xFFFF0000 - rouge opaque

0xFF00FF00 - vert opaque

0xFF0000FF - bleu opaque

0x8000FF00 - vert translucide

0x80FFFFFFFF - noir translucide

0xFF808080 - gris

etc.

 
Vladimir Karputov:

Probablement un problème avec ENUM_COLOR_FORMAT (lors de la création du kanvas) et la méthode d'obtention de la couleur.

Problème résolu.

Dans mon code, le canevas n'a pas été supprimé lorsque j'ai fermé le terminal, il était donc déjà sur le graphique au démarrage, il n'a pas été initialisé et les changements de propriétés n'ont pas su où s'appliquer.

Merci à tous !

 
Nikolai Semko:

J'ai l'impression que vous avez modifié les couleurs.

Quel est l'intérêt de cette ligne ?

ObjectSetInteger(0,"CanvasExamlple",OBJPROP_COLOR,clrNONE);

L'intérêt de la ligne est que sans elle, vous obtenez cette image


Si avec la ligne, alors c'est bien, un joli cadre avec la couleur que j'ai choisie.


 
Vitaly Muzichenko:

Problème résolu.

Mon code n'a pas supprimé le canevas lorsque j'ai fermé le terminal, donc il était déjà sur le graphique lorsque j'ai commencé, donc il n'a pas été initialisé, et les changements de propriétés ne savaient pas où s'appliquer.

Merci à tous !

Hmmm, on ne peut vraiment pas deviner où est le chien en même temps :)

 

Démonstration d'un script avec mise à l'échelle des bitmaps

Dans le fichier Ex5 se trouve un fichier BMP assez important comme ressource.


Dossiers :
TestScaling.ex5  784 kb
 
Nikolai Semko:

Démonstration du script de mise à l'échelle de la trame

Non, c'est vraiment impressionnant.

Mais vous devez créer un module complémentaire utile qui tire parti de toutes ces fonctionnalités de Canvas.

Pour que votre travail ne subisse pas le même sort que l'adaptateur CGA - un merveilleux adaptateur graphique, incompris et sous-estimé par ses contemporains.

Pour ma part, j'ai toujours considéré que le CGA était "nul comme tout" face aux graphismes huit bits du Commodore 64 ou du Sinclair Spectrum. Mais il s'est avéré récemment que, simplement en raison d'un manque de popularité, presque personne n'a utilisé toutes les possibilités de cette carte. Et il n'y avait pratiquement aucun jeu capable de rivaliser avec les ordinateurs de salon huit bits.

Si IBM avait fait la promotion du CGA, si cette démo était apparue en 1981, le CGA aurait été beaucoup plus populaire, et l'EGA serait peut-être sorti plus tard :


Quand je regarde cet écran, je n'arrive pas à croire que c'est possible sur un vieil adaptateur CGA avec sa mémoire vidéo de 16K, connecté à un téléviseur domestique commun (le moniteur RVB ne convient pas du tout. C'était l'idée des développeurs - une meilleure qualité de texte sur le moniteur RVB, mais une palette de couleurs pauvre, mais des possibilités graphiques riches avec un texte mal lisible sur un téléviseur domestique avec une entrée composite).