📄 svgtest.cpp
字号:
// 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 + -