begin process at 2012 05 28 10:27:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Graphique

 > 

Calque pour application graphique


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Calque pour application graphique

jeudi 18 mars 2004 à 16:27:58 | Calque pour application graphique

Grand_steak

Bonjour,

J'aimerai un petit coup de main pour développer mon appli. graphique.
Je dessine une courbe contenant un nbre important de point.
Jusque là, pas de problème...

Mon problème se situe au niveau de l'utilisation de mes curseurs de tracé et mes zones de zoom qui ont besoin d'être rafraichis souvent.

J'utilise l'événement OnMouseMove pour rafraichir la position de mes différents curseurs et la fenêtre se met à osciller car tout est dessiné sur le même plan .

Je voudrais appliqué une sorte de calque afin que ma représentation graphique reste en arrière-plan. Ainsi mes curseurs et mes zones de zoom seraient rafraichies et on ne verrait pas ces oscillations.

Je travaille avec Visual C++ 6.

Merci.
jeudi 18 mars 2004 à 18:24:33 | Re : Calque pour application graphique

ymca2003

tu dessine ta courbe dans un DC en mémoire. Lors du rafraîchissement, tu dessine ce DC à l'écran et tu y rajoute le reste.

1) dessin de la courbe dans un DC en mémoire,

// variables globales:
int cxCourbe, int cyCourbe;
HDC hDCCourbe;
HBITMAP hBmpCourbe;
HBITMAP hOldBmpCourbe;

void DessineCourbe(int cx, int cy)
{
cxCourbe=cx;
cyCourbe=cy;
HDC hdc = GetDC(NULL);
hDCCourbe=CreateCompatibleDC(hdc);
hBmpCourbe=CreateCompatibleBitmap(hdc, cx, cy);
hOldBmpCourbe = (HBITMAP)SelectObject(hDCCourbe, hBmpCourbe);
ReleaseDC(NULL, hdc);


// ici tu dessine ta courbe en utilisant hDCCourbe

}

2) Rafraîchissement de la fenêtre (hdc est le DC de la fenêtre, obtenu par BeginPaint dans OnPaint, ou GetDC)
les autres paramètres sont la taille de la zone cliente où dessiner.

void Redraw(HDC hdc, int cxClient, int cyClient)
{
// DC en mémoire
HDC hMemDC = CreateCompatibleDC(hdc);
HBITMAP hMemBmp = CreateCompatibleBitmap(hdc, cxClient, cyClient);
HBITMAP hOldBmp = (HBITMAP)SelectObject(hMemDC, hMemBmp);

// dessin de la courbe à la position xCourbe, yCourbe
int xCourbe = 0;
int yCourbe = 0;
BitBlt(hMemDC, xCourbe, yCourbe, cxCourbe, cyCourbe, hDCCourbe, 0, 0, SRCCOPY);

// dessin du reste an utilisant hMemDC et pas hdc (curseurs...)


// recopie à l'écran
BitBlt(hdc, 0, 0, cxClient, cyClient, hMemDC, 0, 0, SRCCOPY);


// libération mémoire
SelectObject(hMemDC, hOldBmp);
DeleteObject(hMemBmp);
DeleteDC(hMemDC);
}

3) libération courbe
void FreeCourbe()
{
SelectObject(hDCCourbe, hOldBmpCourbe);
DeleteObject(hBmpCourbe);
DeleteDC(hDCCourbe);
}


Cette discussion est classée dans : problème, curseurs, application, graphique, calque


Répondre à ce message

Sujets en rapport avec ce message

Problème de vues... [ par Kkeyser ] Bonjour,Voilà mon problème : la fenêtre principale de mon application est divisée en 2 vues : une CTreeView et une CView.J'ai donc naturellement utili Problème de plantage graphique [ par Mastersam ] Bonjour, je suis actuellement sur un projet de logiciel de contrôle de heux de lumière. Je ne suis pas encore très avancé mais j'ai déjà un gros probl Application Winsock gérant plusieurs clients [ par Gabi ] Bon, depuis ma dernière application Winsock en console, j'ai éveolué. En effet vous m'avez grandement aidé. Maintenant, mon programme contient à la fo Problème de path de l'application [ par PupetMaster ] Salut, j'ai un problème avec mon application.  Donc je dois écrire des fichiers dans le répertoire d'installation de mon application.  Donc je fais un TcpClient Debug -- No connection [ par pasteque ] Salut, Mon application dispose d'un TcpClient de base : TcpClient* myTcpClient = new TcpClient("localhost",1200); Dans le debuggueur (en pas à pas), Problème avec rand () [ par Samour25 ] Boujours a tous amis programmeur. Voilà mon prob , je dévoloppe une application qui utilise la fonction rand () pour générer des nombres aléatoire, to Problème de mise à jour de ma base de données [ par lam_insat ] Mon application consiste une application multi-tierd.Le probléme est que les modifications que fait un client ne parviennent pas à un deuxieme que lor Problème de transformation d'une application en dll [ par bokame ] Bonjour à toutes et à tous, J'ai converti une application en dll afin de pouvoir l'intégrer dans une autre application mais cette fois en java. L'appe Problème au lancement d'une application sous Visual C++ 6 [ par Ardeje26 ] Sous Visual C++ j'utilise la DLL DLportio pour une maitrise du port parallèle.J'utilise corectement cette DLL et je l'ai intégré comme il se doit (du priorité d'une application [ par cleter ] Bonjour,J'ai un petit problème, peut être que je m'y prend mal, mais bon...Voila ce que je veux faire: je suis en train de créer une application en C


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,265 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales