2010-03-31 2 views
2

간단한 그림을 그려서 wxwidgets의 파일에 저장하려고합니다. 이것은 내가 지금까지 가지고있는 코드입니다. 그러나이 코드는 test.png 그림을 생성하지 않습니다. 그 다음 그것이 있어야 true를 돌려주는 경우wxwidgets saveFile

wxBitmap myBitmap; 
    wxMemoryDC dc; 
    dc.SelectObject(myBitmap); 
    wxFont font=dc.GetFont(); 
    font.SetPointSize(15); 
    dc.SetTextForeground(*wxBLACK); 
    dc.DrawRectangle(0,0,50,100); 
    wxString s(_T("A")); 
    dc.DrawText(s, 5,5); 
    wxString test(_T("images/test.png")); 
    myBitmap.SaveFile(test, wxBITMAP_TYPE_PNG); 

누군가는, 내가 SaveFile 값에 대한 호출의 반환을 확인 것이라고 ... 내가 잘못 뭘하는지에 /마이크 첫째

답변

-1

을 좀 도와 주실 래요 그렇지 않으면 다른 곳에서 실패가 발생합니다.

둘째 당신은 당신이해야한다고 생각 파일을 넣어하지 않을 수 있습니다를 프로그램의 현재 작업 디렉토리에 따라 같은 단지 이미지/test.png이 아닌 전체 경로를 제공하려고합니다. 일반적인 조언의 조각

5

첫째 : 당신이 뭔가 잘못을했다 때마다 wxWidgets에의 디버그 버전을 사용하여, 그것은 종종 주장한다.

먼저 당신은있는 그대로 사용할 수없는 객체의 결과로, 기본 wxBitmap 생성자를 호출합니다. 당신이

wxBitmap myBitmap(200, 200); 

에 첫 선을 변경하는 경우 대신 실제로 직류로 선택할 수 있으며에 페인트 200 개 픽셀의 폭과 높이의 비트 맵을 생성합니다. 또는 비트 맵을 사용하기 전에 wxBitmap::Create()으로 전화 할 수도 있습니다.

또한, PNG 파일로 저장하기 위해 먼저합니다 (wxImage documentation 참조) PNG 이미지 핸들러를 등록해야합니다. ::wxInitAllImageHandlers()을 호출하여 모든 기본 이미지 핸들러를 등록하는 것이 가장 쉽습니다.

마지막으로 현재 디렉토리 아래에 하위 디렉토리 이 있는지 확인해야합니다. 또는 절대 경로와 함께 파일 이름을 사용하십시오. 그러나 비트 맵 저장에 실패하면 런타임에 메시지 상자가 나타납니다.

-1

업데이트 :

"테스트"= 이미지 출력 이름입니다.

".PNG"화상 출력 확장자

"wxBITMAP_TYPE_PNG"= wxBitmap 콘텐츠 타입. 자세한 내용은 http://docs.wxwidgets.org/trunk/gdicmn_8h.html#a90a1eb6d85b5044a99b706fd979f27f5을 참조하십시오!

"SaveFile"= wxBitmap 파일 저장.

"wxBitmap myBitmap;" = 귀하의 예제에서 변수.

"wxString MYPATH (wxGetCwd());" = varibale wxString 당량. "wxstring MYPATH; MYPATH = wxGetCwd는(); MYPATH 변수 앱 폴더의 경로를 반환 wxString MYPATH는 가변형 wxString wxGetCwd()를 호출 경로 앱 폴더 wxString는 MYPATH (wxGetCwd는())로한다. 앱 폴더 MYPATH 변수에 설정 완료

예 :!

wxString myPath(wxGetCwd()); 
wxBitmap myBitmap; 
myBitmap.SaveFile(localAtual + wxT("//test.png"), wxBITMAP_TYPE_PNG); 
+0

설명을하면 답장을 더 가치있게 만들 수 있습니다. –

+0

업데이트 답변! :) –

0

당신은 너무 그것을 저장하기 전에 DC에서 비트 맵 선택을 취소해야 할 수 있습니다 : 당신이 조금 추가한다면

dc.SelectObject(wxNullBitmap); 
myBitmap.SaveFile(test, wxBITMAP_TYPE_PNG);