Bonjour,
J'ai suivi les vidéos
Cet exercice permet de mettre en oeuvre les wxWidgets suivants : -wxFrame -wxMenuBar -wxDialog -wxButton -wxFileDialog -wxClientDC -wxMemoryDC -wxPanel -wxMenu -wxToolBar -wxBitmap -wxTheClipboard.
J'ai refait tout le code en partant de zéro, mais j'ai un petit problème avec la fonction DC->Blit() et ses paramètres
Voici le résultat que j'obtiens :
La copie ne donne que le cadre du wxPanel qui est tout noir
Dans les liens de la vidéo en question, on trouve le source du projet et un exécutable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 void MonPanelFrame::OnCopyClick(wxCommandEvent& event) { wxBitmap mon_bitmap_tmp(Panel1->GetSize(),wxBITMAP_SCREEN_DEPTH); mon_wxmemorydc->SelectObject(mon_bitmap_tmp); mon_wxmemorydc->Blit(wxPoint(0,0),Panel1->GetSize(),mon_wxclientdc,wxPoint(-1,-1),wxCOPY, true, wxDefaultPosition); if (wxTheClipboard->Open()) { wxTheClipboard->SetData(new wxBitmapDataObject(mon_bitmap_tmp)); wxTheClipboard->Close(); } }
J'ai téléchargé le source puis je l'ai adapté à ma version, et cela donne le même résultat
Puis j'ai téléchargé l'exécutable qui lui fonctionne comme dans la vidéo
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 void My_ImageFrame::OnCopyClick(wxCommandEvent& event) { wxBitmap my_bitmap_tmp(Panel1->GetSize(),wxBITMAP_SCREEN_DEPTH); my_wxmemorydc->SelectObject(my_bitmap_tmp); my_wxmemorydc->Blit(wxPoint(0,0), Panel1->GetSize(), my_wxclientdc, wxPoint(-1,-1), wxCOPY, true, wxDefaultPosition); if (wxTheClipboard->Open()) { wxTheClipboard->SetData(new wxBitmapDataObject(my_bitmap_tmp)); wxTheClipboard->Close(); } }
Je cherche donc des précisions sur les 3 derniers paramètres de la fonction Blit()
Certains pourrons me répondre que je devrais poser ma question dans les commentaires de la vidéo, mais j'ai qq difficultés à poser une question compréhensible en grand-breton
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 bool wxDC::Blit ( wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, wxDC * source, wxCoord xsrc, wxCoord ysrc, wxRasterOperationMode logicalFunc = wxCOPY, bool useMask = false, wxCoord xsrcMask = wxDefaultCoord, wxCoord ysrcMask = wxDefaultCoord )
Ensuite, j'aurai une autre question, pour une second problème qui ne marche pas dans aucuns des 3 cas ci-dessus (donc aussi avec l'exécutable fourni), mais ce n'est peut être pas le sujet de l'exercice.
Le wxPanel, n'est pas sauvegardé, donc si une autre fenêtre vient le recouvrir, quand la fenêtre revient en premier plan, le wxPanel est blanc![]()
Partager