GDI-C: Scène 2D interactive

Soyez le premier à donner votre avis sur cette source.

Vue 12 fois - Téléchargée 2 fois

Description

Bonjour,

▼▼ Bug CCM-CS: voir ci-dessous ▼▼

Ce petit exemple de scène 2D est basée sur "GDI+C: Dessin sans scintillement", et permet de représenter l'objet "Damier2D".
L'interactivité se limite ici au nombre de cellules du damier carré, qui est modifié à l'aide d'un contrôle "TrackBar".
 

Damier2D

struct Damier2D { // Damier carré n*n centré à l'origine (n>0)
  int N=0;
  float *C;

  void Def(int n) { // C[0] = -100.0, C[n] = 100.0
    if ((n<=0)||(n==N)) return;
    if (N>0) free(C);
    N=n; C=(float*)malloc((n+1)*sizeof(float));
    float d=200.0f/n,c=-100.0f;
    for (int i=0; i<n; ++i,c+=d) C[i]=c;
    C[n]=100.0f;
  }

  void Draw(HDC dc,int u0,int v0,float dil) {
    const HBRUSH b1=CreateSolidBrush(0X77FFFF),b2=CreateSolidBrush(0XFF0000);
    SelectObject(dc,GetStockObject(NULL_PEN));
    for (int j=0; j<N; ++j)
      for (int i=0; i<N; ++i) {POINT fc[4];
        fc[0]={u0+(int)(dil*C[i])  ,v0+(int)(dil*C[j])};
        fc[1]={u0+(int)(dil*C[i+1]),v0+(int)(dil*C[j])};
        fc[2]={u0+(int)(dil*C[i+1]),v0+(int)(dil*C[j+1])};
        fc[3]={u0+(int)(dil*C[i])  ,v0+(int)(dil*C[j+1])};
        SelectObject(dc,((i&1)==(j&1))?b1:b2); Polygon(dc,fc,4);
    }
  }
};

 
N'oubliez pas d'essayer:
- Move: presser le bouton gauche de la souris et bouger.
- Zoom ("intelligent"): roulette de la souris.
- Modifier le nombre d'éléments avec la "TrackBar".
- Changer la taille de la fenêtre.
 
 
Bonne lecture ...
 
 

Liens

CodeS-SourceS: GDI+A: Déplacement avec la souris
CodeS-SourceS: GDI+B: Move et Zoom avec la souris
CodeS-SourceS: GDI+C: Dessin sans scintillement
CodeS-SourceS: Windows-Controls: C-TrackBar (Slider)
 
 

Bug CCM-CS: Charger une image

Depuis le 14 oct. 2017, personne ne peut déposer un code avec une image comme on est pourtant invité à le faire (voir par exemple: Liste des derniers codes sources).
A mon avis, ces images de capture sont très importantes !

En attendant, je mets cette image à disposition dans le fichier Capture.jpg du Zip, et demande au lecteur de m'excuser pour cette complication.

Je me permets de signaler ici ce bug d'une manière peu conventionnelle, car malgré bien des demandes, les "responsables" sont restés muets (voir: Discussion: Charger une image).

Dans tous les articles, j'enlèverai toute référence à ce bug dès qu'il sera de nouveau possible de charger une image (de capture) pour les articles existants et nouveaux.
 
 

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Commenter la réponse de William VOIROL

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.