Redimensionnement d'un controle picture [MFC] - C++ - Programmation
Marsh Posté le 20-03-2006 à 14:53:08
pendant que j'y suis.... pour récupérer les coordonnées d'une fenêtre y a une astuce aussi simple aussi ?
Marsh Posté le 20-03-2006 à 15:42:26
GetWindowRect() faut peut être faire un ScreenToClient/ClientToScreen des coordonnées retournées.
Bref une petite lecture s'impose mais rien de sorcier (d'ailleurs je réponds de tête).
Marsh Posté le 21-03-2006 à 09:43:40
Hello,
en fait j'avais trouvé ca...mais le prob c'est que les coordonnées retournées changent à chaque image...????!!!!
et mon image se déplace pour au final se retrouver hors champ.....
Code :
|
voici le code mais il me parait tout à fait juste....
Marsh Posté le 21-03-2006 à 10:37:31
Tu appelles ton code à chaque changement d'image ?
A quoi sert le code ? Ajuster la vidéo au bord supérieur gauche du champ statique ?
Ton code compile ? Comment est déclaré WindowRect ? -> ton code ne devrait pas compiler
Voici ma correction. Le ScreenToClient est indispensable car comme l'indique la MSDN:
CWnd::GetClientRect() : "lpRect Points to a CRect object or a RECT structure that will receive the screen coordinates of the upper-left and lower-right corners."
CWnd::MoveWindow() : "For a top-level CWnd object, the x and y parameters are relative to the upper-left corner of the screen. For a child CWnd object, they are relative to the upper-left corner of the parent window's client area."
Code :
|
Marsh Posté le 21-03-2006 à 10:58:35
WindowRect et bien sûr déclaré en CRect...mais je voulais pas mettre tout le code..pour moi c'était implicite....donc excuses-moi
Pour ce qui est du ScreenToClient... le this chez moi n'existe pas quand je l'appelle dans ma fonction CFastInterfaceDlg::OnStartCapture()
Sinon l'ajustement est nécessaire chez moi car je fais un scale x2 sur mon image si l'utilisateur le désire... ce qu'il se passe c'est que en mode normal...pas de prob...quand je scale ok l'image prend la place que j'ai attribué en dimenssionant normalement mon CStatic depuis le compilateur...par contre quand je reviens en normal... le CStatic garde la meme grandeur qu'avant et j'ai mon image plus petite au milieu...avec tout autour un bord gris...
Marsh Posté le 21-03-2006 à 11:02:23
Comment ça t'as pas de this ??
CFastInterfaceDlg c'est bien un CDialog ? CFastInterfaceDlg::OnStartCapture c'est bien une méthode (gestionnaire d'événement) NON STATIQUE de CFastInterfaceDlg?
Si oui, pas de problème. Sinon tu as fait une erreur.
Marsh Posté le 21-03-2006 à 11:04:05
et bien dans le OnPaint... le this il y est je peux accéder à ces méthodes sans prob... par contre dans le OnStart...le this ne me redonne aucune méthode...
Marsh Posté le 21-03-2006 à 11:05:39
attend attend... y a un truc bizarre.. en fait dans mon OnStartCapture() en fait le this existe bien.. mais je ne sais pas pourquoi...les méthodes ne sont pas affichées quand je fais this-> ...enfin je vais voir ça....donc no panic
Marsh Posté le 21-03-2006 à 11:07:46
ce qu'il faut je passe a ma fonction qui s'occupe c'est le CStatic sur lequel pointe mon this donc....
Marsh Posté le 21-03-2006 à 11:09:35
ON_BN_CLICKED(IDC_STOPCAPTURE, OnStopCapture)
afx_msg void OnStartCapture();
et
void CFast_InterfaceDlg::OnStartCapture()
pour la méthode
Marsh Posté le 21-03-2006 à 11:10:01
katmayes a écrit : attend attend... y a un truc bizarre.. en fait dans mon OnStartCapture() en fait le this existe bien.. mais je ne sais pas pourquoi...les méthodes ne sont pas affichées quand je fais this-> ...enfin je vais voir ça....donc no panic |
Habituellement ça veut dire que tu as une erreur plus haut et que le code ne compiles pas (ouais on dirait que VC++ fait une vérification à la volée). Mais bon jamais bien compris pourquoi un coup la liste apparaît et la fois d'après non. En ce qui concerne son contenu, il reprend ce qui est déclaré dans les .H
Marsh Posté le 21-03-2006 à 11:11:16
katmayes a écrit : ce qu'il faut je passe a ma fonction qui s'occupe c'est le CStatic sur lequel pointe mon this donc.... |
... tu remplaces 'this' dans mon code par 'pStatic->GetParent()'
Marsh Posté le 21-03-2006 à 11:15:05
Code :
|
et je vais tester....
Marsh Posté le 21-03-2006 à 11:20:34
bon c'est ok..j'avais dû virer un truc par inadvertance..
en fait ca marche...c'est cool
Merci bcp pour tous tes conseils
Marsh Posté le 21-03-2006 à 11:21:24
Vérifies que ça marche en continu. Je me pose de questions concernant la synchro affichage/mise à jour de l'image (bitmap)
Marsh Posté le 20-03-2006 à 10:09:50
Hello,
en fait ma question est toute simple... comment redimenssionner un contrôle Picture CStatic de type Bitmap ?
merci de vos réponses