图5-4 颜色模块示意图
5.5 线条粗细改变
通过MFC提供的工具,改变细条设置的磅数即可改变线条的粗细。从而使得绘制出的画面有着更强的视觉感。改变线条磅数的工具栏如图5-5所示。
图5-5 修改线条磅数示意图
改变了细条粗细后的效果如图5-6所示。
图5-6 改变线条粗细示意图
5.6 本章小结
本章节主要介绍了软件设计的具体成果。分步骤分工具箱的介绍了软件每一个部分的结构和功能,并对每一个工具箱设计的目的和意义进行了详细的描述。同时也分图片的展示了软件各个部分的显示效果。
16
总结展望
论文基于MFC设计了小型的绘图软件。并在visual studio中编译代码实现了绘图的功能,初步的完成了软件设计的任务。同时在软件中添加各类的工具,如画笔工具、颜色修改工具、保存控制工具、打印和打印预览工具、线条磅数修改等工具。使得软件的功能得以丰富,能完成更多的特定功能。同时在完成的过程中,论文也暴露出了很多问题,软件仍然有很多未能完善的地方。例如工具较少,能以完成较为复杂的图形绘制。软件没有渲染的功能,对于图片的后期处理能力较差。同时软件在很多图片处理上都没有相对应的功能,软件仍需要进行继续的改进。才能使得软件有着适用性。
17
附录软件部分代码
Draw.cpp代码
// Draw.cpp : 定义应用程序的类行为。 #include \#ifdef _DEBUG
#define new DEBUG_NEW #endif // CDrawApp
BEGIN_MESSAGE_MAP(CDrawApp, CWinApp)
ON_COMMAND(ID_APP_ABOUT, &CDrawApp::OnAppAbout) // 基于文件的标准文档命令
ON_COMMAND(ID_FILE_NEW, &CWinApp::OnFileNew) ON_COMMAND(ID_FILE_OPEN, &CWinApp::OnFileOpen) // 标准打印设置命令
ON_COMMAND(ID_FILE_PRINT_SETUP,
&CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP() // CDrawApp构造 CDrawApp::CDrawApp() {
// 支持重新启动管理器
m_dwRestartManagerSupportFlags =
AFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS;
#ifdef _MANAGED
System.Windows.Forms添加引用。
System::Windows::Forms::Application::SetUnhandledExceptionMode(Syste
m::Windows::Forms::UnhandledExceptionMode::ThrowException);
#endif
// TODO: 将以下应用程序 ID 字符串替换为唯一的 ID 字符串;建议的//为CompanyName.ProductName.SubProduct.VersionInformation SetAppID(_T(\
18
字符串格式
}
// 唯一的一个CDrawApp对象 CDrawApptheApp; // CDrawApp初始化
BOOL CDrawApp::InitInstance() {
// TODO: 在此处添加构造代码,
// 将所有重要的初始化放置在InitInstance中
// 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要InitCommonControlsEx()。否则,将无法创建窗口。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls);
// 将它设置为包括所有要在应用程序中使用的 // 公共控件类。
InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinApp::InitInstance(); // 初始化 OLE 库 if (!AfxOleInit()) { }
AfxEnableControlContainer(); EnableTaskbarInteraction(FALSE);
// 使用RichEdit控件需要 AfxInitRichEdit2() // AfxInitRichEdit2(); // 标准初始化
// 如果未使用这些功能并希望减小 // 最终可执行文件的大小,则应移除下列 // 不需要的特定初始化例程 // 更改用于存储设置的注册表项
19
AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE;
}
// TODO: 应适当修改该字符串, // 例如修改为公司或组织名
SetRegistryKey(_T(\应用程序向导生成的本地应用程序\LoadStdProfileSettings(4); // 加载标准 INI 文件选项(包括 MRU) // 注册应用程序的文档模板。文档模板 // 将用作文档、框架窗口和视图之间的连接 CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CDrawDoc),
RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口 RUNTIME_CLASS(CDrawView)); return FALSE;
if (!pDocTemplate)
AddDocTemplate(pDocTemplate);
// 分析标准 shell 命令、DDE、打开文件操作的命令行 CCommandLineInfocmdInfo; ParseCommandLine(cmdInfo); // 调度在命令行中指定的命令。如果
// 用 /RegServer、/Register、/Unregserver或 /Unregister 启动应用程序,if (!ProcessShellCommand(cmdInfo))
return FALSE;
// 唯一的一个窗口已初始化,因此显示它并对其进行更新 m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); return TRUE;
则返回 FALSE。
intCDrawApp::ExitInstance() { }
20
//TODO: 处理可能已添加的附加资源 AfxOleTerm(FALSE); returnCWinApp::ExitInstance();