Code::Blocks+wxSmithでDrawing
津路です。
前回では、目標として、画面に図形やテキストを描いて、更に、図形をファイルに保存することを考えました。
そして、まず、四角形をデバイスコンテキスト上に描きました。
次に、ブラシとペンを赤色に設定し、四角形を描きます。
1 2 3 4 5 | //set the brush and pen to Red dc.SetBrush(*wxRED_BRUSH); dc.SetPen(*wxRED_PEN); //draw a renctangle 40 * 40 dc.DrawRectangle(10,10,40,40); |
次に、四角形の右側に、緑の線を描きます。
1 2 3 4 | wxPen myGreenPen(*wxGREEN, 3, wxPENSTYLE_SOLID); dc.SetPen(myGreenPen); //draw a horizontal line dc.DrawLine(55,40,290,40); |
次に、文字列を緑の線の上下に描きます。
1 2 3 4 5 6 7 8 9 10 | //set foreground to black dc.SetTextBackground(*wxBLACK); //put some text on the drawing dc.DrawText(wxT("テスト文字列"),50,60); //craete a 16 point , serif font, that is not bold wxFont BigFonr(16,wxFONTFAMILY_ROMAN,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_NORMAL,false); dc.SetFont(BigFonr); dc.DrawText(wxT("Red Square"),60,10); |
ここまでで、以下のような図形になります。
更に、今日は、描いた図形をファイルに保存します。
まず、ボタンイベントを定義し、メモリに描いて、それをファイルに保存します。
1 2 3 4 5 6 7 8 9 10 | wxBitmap *paper = new wxBitmap(300,200); wxMemoryDC memDC; memDC.SelectObject(*paper); PictureFrame* fram = new PictureFrame(this); fram->Repin(memDC); //Repin関数は、上記の描画を行う関数です。 memDC.SelectObject(wxNullBitmap); //put the cotentens of paper into a png and into a jpeg file paper->SaveFile(_T("RedSquare.png"), wxBITMAP_TYPE_PNG, NULL); paper->SaveFile(_T("RedSquare.jpg"), wxBITMAP_TYPE_JPEG, NULL); delete paper; |