⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svgtest.cpp

📁 wxGTK 是 wxWidgets 的 linux GTK+ (>2.2.3)版本。wxWidgets 是一个跨平台的 GUI 框架
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// biol75@york.ac.uk (Chris Elliott) March 2000#ifdef __BIDE__#define _NO_VCL#include "condefs.h"USERC("svg.rc");//---------------------------------------------------------------------------#define WinMain WinMain#endif/////////////////////////////////////////////////////////////////////////////// Name:        svgtest.cpp// Purpose:     SVG sample// Author:      Chris Elliott// Modified by:// RCS-ID:      $Id: svgtest.cpp,v 1.12 2006/05/28 23:31:32 VZ Exp $// Licence:     wxWindows license/////////////////////////////////////////////////////////////////////////////// ===========================================================================// declarations// ===========================================================================// ---------------------------------------------------------------------------// headers// ---------------------------------------------------------------------------// For compilers that support precompilation, includes "wx/wx.h".#include "wx/wxprec.h"#ifdef __BORLANDC__#pragma hdrstop#endif#ifndef WX_PRECOMP#include "wx/wx.h"#include "wx/mdi.h"#endif#include "wx/toolbar.h"#include "wx/svg/dcsvg.h"#include "mondrian.xpm"#include "bitmaps/new.xpm"#include "bitmaps/save.xpm"#include "bitmaps/help.xpm"#include "SVGlogo24.xpm"class MyChild;// Define a new applicationclass MyApp : public wxApp{    public:        bool OnInit();};// Define a new frameclass MyFrame : public wxMDIParentFrame{    public:        int nWinCreated;        wxList m_children;        MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title,            const wxPoint& pos, const wxSize& size, const long style);        void InitToolBar(wxToolBar* toolBar);        void OnSize(wxSizeEvent& event);        void OnAbout(wxCommandEvent& event);        void OnNewWindow(wxCommandEvent& event);        void OnQuit(wxCommandEvent& event);        void OnClose(wxCloseEvent& event);        void FileSavePicture (wxCommandEvent & WXUNUSED(event) ) ;        DECLARE_EVENT_TABLE()};class MyCanvas : public wxScrolledWindow{    public:        int m_index ;        MyChild * m_child ;        MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size);        virtual void OnDraw(wxDC& dc);        DECLARE_EVENT_TABLE()};class MyChild: public wxMDIChildFrame{    public:        MyCanvas *m_canvas;        MyFrame  *m_frame ;        //////////////////// Methods        MyChild(wxMDIParentFrame *parent, const wxString& title, const wxPoint& pos, const wxSize& size, const long style);        ~MyChild();        void OnActivate(wxActivateEvent& event);        void OnQuit(wxCommandEvent& event);        void OnClose(wxCloseEvent& event);        bool OnSave(wxString filename) ;        DECLARE_EVENT_TABLE()};// menu items idsenum{    MDI_QUIT = 100,    MDI_NEW_WINDOW,    MDI_SAVE,    MDI_REFRESH,    MDI_CHILD_QUIT,    MDI_ABOUT};IMPLEMENT_APP(MyApp)// ---------------------------------------------------------------------------// global variables// ---------------------------------------------------------------------------MyFrame *frame = (MyFrame *) NULL;// ---------------------------------------------------------------------------// event tables// ---------------------------------------------------------------------------BEGIN_EVENT_TABLE(MyFrame, wxMDIParentFrame)EVT_MENU(MDI_ABOUT, MyFrame::OnAbout)EVT_MENU(MDI_NEW_WINDOW, MyFrame::OnNewWindow)EVT_MENU(MDI_QUIT, MyFrame::OnQuit)EVT_MENU (MDI_SAVE, MyFrame::FileSavePicture)EVT_CLOSE(MyFrame::OnClose)EVT_SIZE(MyFrame::OnSize)END_EVENT_TABLE()// ===========================================================================// implementation// ===========================================================================// ---------------------------------------------------------------------------// MyApp// ---------------------------------------------------------------------------// Initialise this in OnInit, not staticallybool MyApp::OnInit(){    // Create the main frame window    frame = new MyFrame((wxFrame *)NULL, -1, wxT("SVG Demo"),        wxPoint(-1, -1), wxSize(500, 400),        wxDEFAULT_FRAME_STYLE | wxHSCROLL | wxVSCROLL);    // Make a menubar    wxMenu *file_menu = new wxMenu;    file_menu->Append(MDI_NEW_WINDOW, wxT("&New test\tCtrl+N"));    file_menu->Append(MDI_QUIT, wxT("&Exit\tAlt+X"));    wxMenu *help_menu = new wxMenu;    help_menu->Append(MDI_ABOUT, wxT("&About"));    wxMenuBar *menu_bar = new wxMenuBar;    menu_bar->Append(file_menu, wxT("&File"));    menu_bar->Append(help_menu, wxT("&Help"));    // Associate the menu bar with the frame    frame->SetMenuBar(menu_bar);#if wxUSE_STATUSBAR    frame->CreateStatusBar();#endif // wxUSE_STATUSBAR    frame->Show(true);    SetTopWindow(frame);    return true;}// ---------------------------------------------------------------------------// MyFrame// ---------------------------------------------------------------------------// Define my frame constructorMyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title,    const wxPoint& pos, const wxSize& size, const long style)        : wxMDIParentFrame(parent, id, title, pos, size, style){    nWinCreated = 0 ;    // Give it an icon    SetIcon(wxICON(mondrian));    CreateToolBar(wxNO_BORDER | wxTB_FLAT | wxTB_HORIZONTAL);    InitToolBar(GetToolBar());}void MyFrame::OnClose(wxCloseEvent& event){    if ( !event.CanVeto() )    {        event.Skip();        return ;    }    if ( m_children.GetCount () < 1 )    {        event.Skip();        return ;    }    // now try the children    wxObjectList::compatibility_iterator pNode = m_children.GetFirst ();    wxObjectList::compatibility_iterator pNext ;    MyChild * pChild ;    while ( pNode )    {        pNext = pNode -> GetNext ();        pChild = (MyChild*) pNode -> GetData ();        if (pChild -> Close ())        {            m_children.Erase(pNode) ;        }        else        {            event.Veto();            return;        }        pNode = pNext ;    }    event.Skip();}void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)){    Close();}void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) ){    (void)wxMessageBox(wxT("wxWidgets 2.0 SVG 1.0 Test\n")        wxT("Author: Chris Elliott (c) 2002\n")        wxT("Usage: svg.exe \nClick File | New to show tests\n\n"), wxT("About SVG Test"));}void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event) ){    // Make another frame, containing a canvas    MyChild *subframe ;    m_children.Append (new MyChild(frame, wxT("SVG Frame"),        wxPoint(-1, -1), wxSize(-1, -1),        wxDEFAULT_FRAME_STYLE )   ) ;    subframe = (MyChild *) m_children.GetLast() -> GetData ();    wxString title;    title.Printf(wxT("SVG Test Window %d"), nWinCreated );    // counts number of children previously, even if now closed    nWinCreated ++ ;    // Give it a title and icon    subframe->SetTitle(title);    subframe->SetIcon(wxICON(mondrian));    // Make a menubar    wxMenu *file_menu = new wxMenu;    file_menu->Append(MDI_NEW_WINDOW, wxT("&Another test\tCtrl+N"));    file_menu->Append(MDI_SAVE, wxT("&Save\tCtrl+S"), wxT("Save in SVG format"));    file_menu->Append(MDI_CHILD_QUIT, wxT("&Close child\tCtrl+F4"));    file_menu->Append(MDI_QUIT, wxT("&Exit\tAlt+X"));    wxMenu *help_menu = new wxMenu;    help_menu->Append(MDI_ABOUT, wxT("&About"));    wxMenuBar *menu_bar = new wxMenuBar;    menu_bar->Append(file_menu, wxT("&File"));    menu_bar->Append(help_menu, wxT("&Help"));    // Associate the menu bar with the frame    subframe->SetMenuBar(menu_bar);    subframe->Show(true);}void MyFrame::OnSize(wxSizeEvent& event){    int w, h;    GetClientSize(&w, &h);    GetClientWindow()->SetSize(0, 0, w, h);    event.Skip();}void MyFrame::InitToolBar(wxToolBar* toolBar)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -