📄 gdiplus.cpp
字号:
#include "GDIPlus.h"
#include "GDIPlusView.h"
CMainWindow::CMainWindow()
{
pParentWindow = this;
InitializeComponent();
nDocCount=0;
CreateDocument();
}
CMainWindow::~CMainWindow()
{
//pComponents->Dispose();
}
void CMainWindow::InitializeComponent()
{
pComponents = new System::ComponentModel::Container();
pPrintDoc = new Printing::PrintDocument();
pPrintDoc->PrintPage += new PrintPageEventHandler(this, PrintPage);
AutoScaleBaseSize = System::Drawing::Size(5, 13);
Text = "GDIPlus";
IsMdiContainer = true;
Menu = pMainMenu;
ClientSize = System::Drawing::Size(600, 400);
pHelpProvider = new System::Windows::Forms::HelpProvider();
pHelpProvider->HelpNamespace = S"Help\\GDIPlus.chm";
pHelpProvider->SetShowHelp(this, true);
//File
pNewMenuItem = new Windows::Forms::MenuItem(S"&New",new EventHandler(this, &CMainWindow::MenuItemHandler));
pOpenMenuItem = new Windows::Forms::MenuItem(S"&Open", new EventHandler(this, &CMainWindow::MenuItemHandler));
pCloseMenuItem = new Windows::Forms::MenuItem(S"&Close", new EventHandler(this, &CMainWindow::MenuItemHandler));
pSaveMenuItem = new Windows::Forms::MenuItem(S"&Save", new EventHandler(this, &CMainWindow::MenuItemHandler));
pSaveAsMenuItem = new Windows::Forms::MenuItem(S"Save &As", new EventHandler(this, &CMainWindow::MenuItemHandler));
pLine1MenuItem = new Windows::Forms::MenuItem(S"-");
pPrintMenuItem = new Windows::Forms::MenuItem(S"&Print",new EventHandler(this, &CMainWindow::MenuItemHandler));
pPrintPreviewMenuItem = new Windows::Forms::MenuItem(S"P&rintPreview",new EventHandler(this, &CMainWindow::MenuItemHandler));
pLine2MenuItem = new Windows::Forms::MenuItem(S"-");
pLine3MenuItem = new Windows::Forms::MenuItem(S"-");
pExitMenuItem = new Windows::Forms::MenuItem(S"E&xit",new EventHandler(this, &CMainWindow::MenuItemHandler));
Windows::Forms::MenuItem *rFileItems[] =
new Windows::Forms::MenuItem *[10];
rFileItems[0] = pNewMenuItem;
rFileItems[1] = pOpenMenuItem;
rFileItems[2] = pCloseMenuItem;
rFileItems[3] = pSaveMenuItem;
rFileItems[4] = pSaveAsMenuItem;
rFileItems[5] = pLine1MenuItem;
rFileItems[6] = pPrintMenuItem;
rFileItems[7] = pPrintPreviewMenuItem;
rFileItems[8] = pLine2MenuItem;
rFileItems[9] = pExitMenuItem;
pFileMenuItem = new Windows::Forms::MenuItem(S"&File", rFileItems);
pClearAllMenuItem = new Windows::Forms::MenuItem(S"Clear &All",new EventHandler(this, &CMainWindow::MenuItemHandler));
Windows::Forms::MenuItem *rEditItems[] =
new Windows::Forms::MenuItem *[1];
rEditItems[0] = pClearAllMenuItem;
//rEditItems[1] = pLine3MenuItem;
pEditMenuItem = new Windows::Forms::MenuItem(S"&Edit", rEditItems);
//Pen
pThickLineMenuItem = new Windows::Forms::MenuItem(S"Thick Line",new EventHandler(this, &CMainWindow::MenuItemHandler));
pPenWidthMenuItem = new Windows::Forms::MenuItem(S"Pen Width",new EventHandler(this, &CMainWindow::MenuItemHandler));
Windows::Forms::MenuItem *rPenItems[] =
new Windows::Forms::MenuItem *[2];
rPenItems[0] = pThickLineMenuItem;
rPenItems[1] = pPenWidthMenuItem;
pPenMenuItem = new Windows::Forms::MenuItem(S"Pen", rPenItems);
//View
pToolbarMenuItem = new Windows::Forms::MenuItem(S"Toolbar",new EventHandler(this, &CMainWindow::MenuItemHandler));
pToolbarMenuItem->Checked = true;
pStatusbarMenuItem = new Windows::Forms::MenuItem(S"Statusbar",new EventHandler(this, &CMainWindow::MenuItemHandler));
pStatusbarMenuItem->Checked = true;
Windows::Forms::MenuItem *rviewItems[] =
new Windows::Forms::MenuItem *[2];
rviewItems[0] = pToolbarMenuItem;
rviewItems[1] = pStatusbarMenuItem;
pViewMenuItem = new Windows::Forms::MenuItem(S"View", rviewItems);
//START PSK
pDrawLine = new Windows::Forms::MenuItem(S"Line",new EventHandler(this, &CMainWindow::MenuItemHandler));
pDrawEllipse = new Windows::Forms::MenuItem(S"Ellipse",new EventHandler(this, &CMainWindow::MenuItemHandler));
pDrawRect = new Windows::Forms::MenuItem(S"Rectangle",new EventHandler(this, &CMainWindow::MenuItemHandler));
pDrawText = new Windows::Forms::MenuItem(S"Text",new EventHandler(this, &CMainWindow::MenuItemHandler));
pDrawFilledEllipse = new Windows::Forms::MenuItem(S"Filled Ellipse",new EventHandler(this, &CMainWindow::MenuItemHandler));
pDrawFilledRect = new Windows::Forms::MenuItem(S"Filled Rect",new EventHandler(this, &CMainWindow::MenuItemHandler));
pDelegateHandler = new Windows::Forms::MenuItem(S"Delegate and Events",new EventHandler(this, &CMainWindow::MenuItemHandler));
Windows::Forms::MenuItem *rDrawItems[] =
new Windows::Forms::MenuItem *[7];
rDrawItems[0] = pDrawLine;
rDrawItems[1] = pDrawEllipse;
rDrawItems[2] = pDrawRect;
rDrawItems[3] = pDrawText;
rDrawItems[4] = pDrawFilledEllipse;
rDrawItems[5] = pDrawFilledRect;
rDrawItems[6] = pDelegateHandler;
pDrawMenuItem = new Windows::Forms::MenuItem(S"Draw", rDrawItems);
//END PSK
//Windows
pNewWindowMenuItem = new Windows::Forms::MenuItem(S"New Window",new EventHandler(this, &CMainWindow::MenuItemHandler));
pCascadeMenuItem = new Windows::Forms::MenuItem(S"Cascade",new EventHandler(this, &CMainWindow::MenuItemHandler));
pTileMenuItem = new Windows::Forms::MenuItem(S"Tile",new EventHandler(this, &CMainWindow::MenuItemHandler));
Windows::Forms::MenuItem *rwindowItems[] =
new Windows::Forms::MenuItem *[3];
rwindowItems[0] = pNewWindowMenuItem;
rwindowItems[1] = pCascadeMenuItem;
rwindowItems[2] = pTileMenuItem;
pWindowMenuItem = new Windows::Forms::MenuItem(S"Window", rwindowItems);
//Help
pHelpTopicsMenuItem = new Windows::Forms::MenuItem(S"Help Topics",new EventHandler(this, &CMainWindow::MenuItemHandler));
pHelpAboutMenuItem = new Windows::Forms::MenuItem(S"About GDIPlus",new EventHandler(this, &CMainWindow::MenuItemHandler));
Windows::Forms::MenuItem *rhelpItems[] =
new Windows::Forms::MenuItem *[2];
rhelpItems[0] = pHelpTopicsMenuItem;
rhelpItems[1] = pHelpAboutMenuItem;
pHelpMenuItem = new Windows::Forms::MenuItem(S"Help", rhelpItems);
//MainMenu
Windows::Forms::MenuItem *rMainItems[] = new Windows::Forms::MenuItem *[7];
rMainItems[0] = pFileMenuItem;
rMainItems[1] = pEditMenuItem;
rMainItems[2] = pPenMenuItem;
rMainItems[3] = pViewMenuItem;
rMainItems[4] = pDrawMenuItem;
rMainItems[5] = pWindowMenuItem;
rMainItems[6] = pHelpMenuItem;
pMainMenu = new MainMenu(rMainItems);
Menu = pMainMenu;
//Toolbar and Status bar
pStatusBar = new Windows::Forms::StatusBar();
pStatusBar->TabIndex = 2;
pStatusBar->Text = "For Help, press F1";
pHelpTBButton = new Windows::Forms::ToolBarButton();
pHelpTBButton->ImageIndex = 5;
pHelpTBButton->ToolTipText = "Help";
pPrintTBButton = new Windows::Forms::ToolBarButton();
pPrintTBButton->ImageIndex = 4;
pPrintTBButton->ToolTipText = "Print";
pPreviewTBButton = new Windows::Forms::ToolBarButton();
pPreviewTBButton->ImageIndex = 3;
pPreviewTBButton->ToolTipText = "Print Preview";
pSaveTBButton = new Windows::Forms::ToolBarButton();
pSaveTBButton->ImageIndex = 2;
pSaveTBButton->ToolTipText = "Save";
pOpenTBButton = new Windows::Forms::ToolBarButton();
pOpenTBButton->ImageIndex = 1;
pOpenTBButton->ToolTipText = "Open";
pNewTBButton = new Windows::Forms::ToolBarButton();
pNewTBButton->ImageIndex = 0;
pNewTBButton->ToolTipText = "New";
pImageList = new Windows::Forms::ImageList();
pImageList->ImageSize = System::Drawing::Size(16, 16);
pImageList->TransparentColor = System::Drawing::Color::Transparent;
pImageList->Images->Add(Image::FromFile(S"Res\\new.bmp"));
pImageList->Images->Add(Image::FromFile(S"Res\\open.bmp"));
pImageList->Images->Add(Image::FromFile(S"Res\\save.bmp"));
pImageList->Images->Add(Image::FromFile(S"Res\\preview.bmp"));
pImageList->Images->Add(Image::FromFile(S"Res\\print.bmp"));
pImageList->Images->Add(Image::FromFile(S"Res\\help.bmp"));
pToolBar = new Windows::Forms::ToolBar();
pToolBar->ImageList = pImageList;
pToolBar->DropDownArrows = true;
pToolBar->ShowToolTips = true;
System::Windows::Forms::ToolBarButton* rToolbarButtons[]=new System::Windows::Forms::ToolBarButton*[6];
rToolbarButtons[0]=pNewTBButton;
rToolbarButtons[1]=pOpenTBButton;
rToolbarButtons[2]=pSaveTBButton;
rToolbarButtons[3]=pPreviewTBButton;
rToolbarButtons[4]=pPrintTBButton;
rToolbarButtons[5]=pHelpTBButton;
pToolBar->Buttons->AddRange(rToolbarButtons);
pToolBar->ButtonClick += new System::Windows::Forms::ToolBarButtonClickEventHandler(this,&CMainWindow::ToolbarHandler);
Control *rControls[] = new Control *[2];
rControls[0] = pStatusBar;
rControls[1] = pToolBar;
this->Controls->AddRange(rControls);
}
void CMainWindow::MenuItemHandler(Object* sender, EventArgs* e)
{
if(sender->Equals(pNewMenuItem))
{
New();
}
else if(sender->Equals(pOpenMenuItem))
{
Open();
}
else if(sender->Equals(pSaveMenuItem))
{
Save();
}
else if(sender->Equals(pPrintPreviewMenuItem))
{
PrintPreview();
}
else if(sender->Equals(pPrintMenuItem))
{
Print();
}
else if(sender->Equals(pHelpAboutMenuItem))
{
AboutHelp();
}
else if(sender->Equals(pExitMenuItem))
{
Exit();
}
else if(sender->Equals(pCloseMenuItem))
{
CloseView();
}
else if(sender->Equals(pTileMenuItem))
{
Tile();
}
else if(sender->Equals(pCascadeMenuItem))
{
Cascade();
}
else if(sender->Equals(pClearAllMenuItem))
{
ClearAll();
}
else if(sender->Equals(pSaveAsMenuItem))
{
Save();
}
else if(sender->Equals(pNewWindowMenuItem))
{
NewWindow();
}
else if(sender->Equals(pPenWidthMenuItem))
{
PenWidthsDlg();
}
else if(sender->Equals(pThickLineMenuItem))
{
ThickLine();
}
else if(sender->Equals(pHelpTopicsMenuItem))
{
HelpTopics();
}
else if(sender->Equals(pToolbarMenuItem))
{
pToolBar->Visible = !pToolBar->Visible ;
pToolbarMenuItem->Checked = pToolBar->Visible;
}
else if(sender->Equals(pStatusbarMenuItem))
{
pStatusBar->Visible = !pStatusBar->Visible;
pStatusbarMenuItem->Checked = pStatusBar->Visible;
}
else if(sender->Equals(pDrawLine))
{
DrawLine();
}
else if(sender->Equals(pDrawEllipse))
{
DrawEllipse();
}
else if(sender->Equals(pDrawRect))
{
DrawRect();
}
else if(sender->Equals(pDrawText))
{
DrawText();
}
else if(sender->Equals(pDrawFilledEllipse))
{
DrawFilledEllipse();
}
else if(sender->Equals(pDrawFilledRect))
{
DrawFilledRect();
}
else if(sender->Equals(pDelegateHandler))
{
HandleDelegate();
}
}
void CMainWindow::ToolbarHandler(Object* sender, ToolBarButtonClickEventArgs* e)
{
// Evaluate the Button property to determine which button was clicked.
switch (this->pToolBar->Buttons->IndexOf(e->Button))
{
case 0:
New();
break;
case 1:
Open();
break;
case 2:
Save();
break;
case 3:
PrintPreview();
break;
case 4:
Print();
break;
case 5:
HelpTopics();
break;
default:
break;
}
}
//About GDIPlus
void CMainWindow::AboutHelp()
{
MessageBox::Show(S"GDIPlus Version 1.0", S"About GDIPlus");
}
//Help Topics
void CMainWindow::HelpTopics()
{
Help::ShowHelp(this, S"help\\GDIPlus.chm");
}
//Print
void CMainWindow::Print()
{
try
{
pPrintDoc->Print();
}
catch(Exception* e)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -