codeblocks+wxWidgets図面
8334 ワード
最近codeblocks+wxWidgetsを使って1つの実験の結果図をして、採用するバージョンはcodeblocksSVNが完璧に緑色版を配置するので、SVN 6852、ダウンロードアドレスhttp://bt.neu6.edu.cn/viewthread.php?tid=692508&highlight=codeblocks
このバージョンを採用したのは、配置する必要がなく、今手元にあるものをすばやく仕上げるのに便利だからです.
新規プロジェクト、wxWidgetsプロジェクトを選択:
最初のステップの後は歓迎インタフェースで、気にする必要はありません.next;
ポップアップウィンドウはwxWidgetsのバージョンを選択するように要求して、私の下のバージョンは2.8に統合しました.x、選択したらnextをクリックします.
パスとプロジェクト名を設定するには、次の手順に従います.
作者の情報を入力して、気にしないで、next;
使用するGUIタイプを選んで、私のする機能は比較的に簡単で、直接Noneを選んで、next
WxWidgetsのパスを入力すると、緑版を利用しているため、設定する必要もなく、$(#wx)というグローバルシンボルを保持し、nextを続行します.
最後に工事が完成しました.工事リストは以下の通りです.
WxDrawAppを置き換えます.cppの内容:
wxDrawMainを変更します.cppの内容:
wxDrawAppを変更します.hの内容:
wxDrawMainを変更します.hの内容:
これらのコードはMFC、C++の経験がある人なら誰でも理解でき、Lineクラスを新設し、ライブラリのOnPaint関数を再ロードし、線分を描く機能を完成した.
効果は次のとおりです.
OnPaint応答関数の内容は、さまざまな複雑な描画を完了するために変更できます.次に、有用なコードインスタンスを貼り付けます.
from:http://www.cnblogs.com/ziqiao/archive/2011/11/14/2248268.html
このバージョンを採用したのは、配置する必要がなく、今手元にあるものをすばやく仕上げるのに便利だからです.
新規プロジェクト、wxWidgetsプロジェクトを選択:
最初のステップの後は歓迎インタフェースで、気にする必要はありません.next;
ポップアップウィンドウはwxWidgetsのバージョンを選択するように要求して、私の下のバージョンは2.8に統合しました.x、選択したらnextをクリックします.
パスとプロジェクト名を設定するには、次の手順に従います.
作者の情報を入力して、気にしないで、next;
使用するGUIタイプを選んで、私のする機能は比較的に簡単で、直接Noneを選んで、next
WxWidgetsのパスを入力すると、緑版を利用しているため、設定する必要もなく、$(#wx)というグローバルシンボルを保持し、nextを続行します.
最後に工事が完成しました.工事リストは以下の通りです.
WxDrawAppを置き換えます.cppの内容:
#include "wxDrawApp.h"
//(*AppHeaders
#include "wxDrawMain.h"
#include <wx/image.h>
IMPLEMENT_APP(MyApp)
bool MyApp::OnInit()
{
Line *line = new Line(wxT("Line"));
line->Show(true);
return true;
}
wxDrawMainを変更します.cppの内容:
#include "wxDrawMain.h"
Line::Line(const wxString& title)
: wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(280, 180))
{
this->Connect(wxEVT_PAINT, wxPaintEventHandler(Line::OnPaint));
this->Centre();
}
void Line::OnPaint(wxPaintEvent& event)
{
wxPaintDC dc(this);
//
wxCoord x1 = 50, y1 = 60;
wxCoord x2 = 190, y2 = 60;
dc.DrawLine(x1, y1, x2, y2);
}
wxDrawAppを変更します.hの内容:
#include <wx/wx.h>
class MyApp : public wxApp
{
public:
virtual bool OnInit();
};
wxDrawMainを変更します.hの内容:
#include <wx/wx.h>
class Line : public wxFrame
{
public:
Line(const wxString& title);
void OnPaint(wxPaintEvent& event);
};
これらのコードはMFC、C++の経験がある人なら誰でも理解でき、Lineクラスを新設し、ライブラリのOnPaint関数を再ロードし、線分を描く機能を完成した.
効果は次のとおりです.
OnPaint応答関数の内容は、さまざまな複雑な描画を完了するために変更できます.次に、有用なコードインスタンスを貼り付けます.
void Line::OnPaint(wxPaintEvent& event)
{
wxPaintDC dc(this);
//
wxCoord x1 = 50, y1 = 60;
wxCoord x2 = 190, y2 = 60;
dc.DrawLine(x1, y1, x2, y2);
//
dc.DrawText(wxT("fjsadk"), 40, 60);
dc.DrawText(wxT("fwefdecd"), 70, 80);
//
dc.DrawPoint(10,10);
dc.DrawPoint(10,20);
dc.DrawPoint(20,10);
dc.DrawPoint(20,20);
//
wxColour col1, col2;
col1.Set(wxT("#0c0c0c"));
col2.Set(wxT("#000000"));
wxBrush brush(wxColour(255, 255, 255), wxTRANSPARENT);
dc.SetBrush(brush);
dc.SetPen(wxPen(col1, 1, wxSOLID));
dc.DrawRectangle(10, 15, 90, 60);
dc.SetPen(wxPen(col1, 1, wxDOT));
dc.DrawRectangle(130, 15, 90, 60);
dc.SetPen(wxPen(col1, 1, wxLONG_DASH));
dc.DrawRectangle(250, 15, 90, 60);
dc.SetPen(wxPen(col1, 1, wxSHORT_DASH));
dc.DrawRectangle(10, 105, 90, 60);
dc.SetPen(wxPen(col1, 1, wxDOT_DASH));
dc.DrawRectangle(130, 105, 90, 60);
dc.SetPen(wxPen(col1, 1, wxTRANSPARENT));
dc.DrawRectangle(250, 105, 90, 60);
//
wxColour gray, white, red, blue;
wxColour orange, green, brown;
gray.Set(wxT("#d4d4d4"));
white.Set(wxT("#ffffff"));
red.Set(wxT("#ff0000"));
orange.Set(wxT("#fa8e00"));
green.Set(wxT("#619e1b"));
brown.Set(wxT("#715b33"));
blue.Set(wxT("#0d0060"));
dc.SetPen(wxPen(gray));
dc.DrawRectangle(20, 20, 50, 50);
dc.DrawRectangle(30, 40, 50, 50);
dc.SetBrush(wxBrush(white));
dc.DrawRectangle(100, 20, 50, 50);
dc.DrawRectangle(110, 40, 50, 50);
wxRegion region1(100, 20, 50, 50);
wxRegion region2(110, 40, 50, 50);
region1.Intersect(region2);
wxRect rect1 = region1.GetBox();
dc.SetClippingRegion(region1);
dc.SetBrush(wxBrush(red));
dc.DrawRectangle(rect1);
dc.DestroyClippingRegion();
dc.SetBrush(wxBrush(white));
dc.DrawRectangle(180, 20, 50, 50);
dc.DrawRectangle(190, 40, 50, 50);
wxRegion region3(180, 20, 50, 50);
wxRegion region4(190, 40, 50, 50);
region3.Union(region4);
dc.SetClippingRegion(region3);
wxRect rect2 = region3.GetBox();
dc.SetBrush(wxBrush(orange));
dc.DrawRectangle(rect2);
dc.DestroyClippingRegion();
dc.SetBrush(wxBrush(white));
dc.DrawRectangle(20, 120, 50, 50);
dc.DrawRectangle(30, 140, 50, 50);
wxRegion region5(20, 120, 50, 50);
wxRegion region6(30, 140, 50, 50);
region5.Xor(region6);
wxRect rect3 = region5.GetBox();
dc.SetClippingRegion(region5);
dc.SetBrush(wxBrush(green));
dc.DrawRectangle(rect3);
dc.DestroyClippingRegion();
dc.SetBrush(wxBrush(white));
dc.DrawRectangle(100, 120, 50, 50);
dc.DrawRectangle(110, 140, 50, 50);
wxRegion region7(100, 120, 50, 50);
wxRegion region8(110, 140, 50, 50);
region7.Subtract(region8);
wxRect rect4 = region7.GetBox();
dc.SetClippingRegion(region7);
dc.SetBrush(wxBrush(brown));
dc.DrawRectangle(rect4);
dc.DestroyClippingRegion();
dc.SetBrush(white);
dc.DrawRectangle(180, 120, 50, 50);
dc.DrawRectangle(190, 140, 50, 50);
wxRegion region9(180, 120, 50, 50);
wxRegion region10(190, 140, 50, 50);
region10.Subtract(region9);
wxRect rect5 = region10.GetBox();
dc.SetClippingRegion(region10);
dc.SetBrush(wxBrush(blue));
dc.DrawRectangle(rect5);
dc.DestroyClippingRegion();
}
from:http://www.cnblogs.com/ziqiao/archive/2011/11/14/2248268.html