資源簡介
在VS2015環境下,利用MFC框架實現的一款高仿“畫圖”工具,實現絕大部分功能甚至更多創新點。(注釋超詳細)
實現了點、直線、曲線、折線、矩形、圓形、多邊形等等形狀,并且具有區域限制、鼠標捕捉等功能;
實現了不同筆型,包括鉛筆、圓珠筆、熒光筆等等;
可以根據不同的筆設置不同的筆寬和筆色以及虛線、點線等等功能;
實現了多種畫圖工具,包括不限于橡皮、筆刷子、油漆桶、部分區域顏色填充、設置字體和顏色、添加文字;
實現放大鏡功能等;
添加多個資源文件,制作工具欄,設置工具欄,實現滾動條滾屏操作等;
實現保存圖片、關閉保存等等功能。
一句話概括一下,“畫圖”有的這里基本都有,“畫圖”沒有的,這里還有。

代碼片段和文件信息
//?BottomFormView.cpp?:?實現文件
//
#include?“stdafx.h“
#include?“WTImage.h“
#include?“BottomFormView.h“
#include?“MainShape.h“
#include?“TopFormView.h“
#include?“MainFrm.h“
#include?“Graph.h“
#include?“SettingDlg.h“
#include?“WTImageDoc.h“
#include?“MagnifyDlg.h“
//?放大鏡功能中用到
#define??MAGNIFIERSIZE 30?//矩形大小
#define??MAGNIFYINGMULTIPLE 4??//放大倍數
#define??OFFSETWIDE 16?//偏離光標熱點(寬)
#define??OFFSETHIGH 20?//偏離光標熱點(高)
CBottomFormView?*pBottomFormView;
//?CBottomFormView
IMPLEMENT_DYNCREATE(CBottomFormView?CFormView)
CBottomFormView::CBottomFormView()
:?CFormView(IDD_BOTTOMFORMVIEW)
{
pBottomFormView?=?this;
m_DrawType?=?0;
m_BtisDown?=?false;
m_nLineWidth?=?0;
m_nLinestyle?=?0;
m_color?=?RGB(0?0?0);
m_color_lightpen?=?RGB(255?255?77);
m_strFontName?=?““;
m_pMDC?=?new?CDC();
m_ptPolyFirst?=?0;
m_ptPolyLast?=?0;
m_PolyCount?=?0;
m_strLine?=?““;
m_ptTextOrigin?=?0;
m_flagFullPaint?=?false;
m_rectTracker.m_nstyle?=?CRectTracker::resizeInside?|?CRectTracker::dottedLine; //初始化橡皮筋類
m_listPos?=?0;
m_Close?=?true; //默認點關閉時就置位為關
}
CBottomFormView::~CBottomFormView()
{
}
void?CBottomFormView::DoDataExchange(CDataExchange*?pDX)
{
CFormView::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CBottomFormView?CFormView)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
ON_WM_RBUTTONUP()
ON_WM_CHAR()
ON_COMMAND(ID_DRAW_SAVE?&CBottomFormView::OnFileSave)
END_MESSAGE_MAP()
//?CBottomFormView?診斷
#ifdef?_DEBUG
void?CBottomFormView::AssertValid()?const
{
CFormView::AssertValid();
}
#ifndef?_WIN32_WCE
void?CBottomFormView::Dump(CDumpContext&?dc)?const
{
CFormView::Dump(dc);
}
#endif
#endif?//_DEBUG
//?CBottomFormView?消息處理程序
void?CBottomFormView::OnInitialUpdate() //視圖窗口完全建立后第一個被框架調用的函數
{
CScrollView::OnInitialUpdate();
SetScrollSizes(MM_TEXT?CSize(GetSystemMetrics(SM_CXSCREEN)?GetSystemMetrics(SM_CYSCREEN)));
}
void?CBottomFormView::OnDraw(CDC*?pDC)
{
//TODO:?在此添加專用代碼?或?調用基類
CRect?rcBottomView(-1-1?GetSystemMetrics(SM_CXSCREEN)?GetSystemMetrics(SM_CYSCREEN)); //給下半部分紙界面上色
pDC->FillRect(&rcBottomView?&CBrush(RGB(255?255?255)));
m_scRollpt?=?GetScrollPosition();
CClientDC?dc(this); //創建dc
dc.SetViewportOrg(0?0);
dc.BitBlt(0?0?rcBottomView.Width()?rcBottomView.Height()?m_pMDC?m_scRollpt.x?m_scRollpt.y?SRCCOPY);
}
void?CBottomFormView::OnLButtonDown(UINT?nFlags?CPoint?point)
{
//?TODO:?在此添加消息處理程序代碼和/或調用默認值
CClientDC?dc(this); //創建設備描述表
CBrush?D_erase(GetBkColor(dc)); //創建橡皮擦
CBrush?D_Brush(m_color); //創建刷子
//CRect?cwrect;
//bool?IsInRct?=?false;
//CRect?Trect;??????????//定義橡皮筋框的矩形
//CRect?Prect;?????????//圖片矩形框
//CRect?AbsRect;
//int?i?=?0;
SetCapture();
/*畫圖圖形的需要*/
m_ptOrigin?=?point;
m_ptEnd?=?point;
m_ptOld?=?point;
if?(m_PolyCount?==?0)
{
m_ptPolyFirst?=?point;
}
/*工具文本插入符的需要*/
switch?(m_DrawType)
{
case?TTEXTINSERT:
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????41088??2018-10-09?18:44??WTImage_V\image\1.jpg
?????文件?????475501??2018-10-09?18:44??WTImage_V\image\2.jpg
?????文件??????20291??2018-10-12?11:00??WTImage_V\WTImage\BottomFormView.cpp
?????文件???????2497??2018-10-11?15:51??WTImage_V\WTImage\BottomFormView.h
?????文件????????427??2018-09-28?09:53??WTImage_V\WTImage\ClassDiagram.cd
?????文件????????148??2018-09-27?11:19??WTImage_V\WTImage\DrawingGraphics.cpp
?????文件????????147??2018-09-27?11:19??WTImage_V\WTImage\DrawingGraphics.h
?????文件????????270??2018-09-29?11:20??WTImage_V\WTImage\Graph.cpp
?????文件????????216??2018-09-29?11:19??WTImage_V\WTImage\Graph.h
?????文件??????41088??2018-10-09?18:44??WTImage_V\WTImage\image\1.jpg
?????文件?????475501??2018-10-09?18:44??WTImage_V\WTImage\image\2.jpg
?????文件???????3378??2018-10-11?17:18??WTImage_V\WTImage\MagnifyDlg.cpp
?????文件????????657??2018-10-11?17:08??WTImage_V\WTImage\MagnifyDlg.h
?????文件??????20334??2018-10-11?16:56??WTImage_V\WTImage\MainFrm.cpp
?????文件???????3518??2018-10-11?15:51??WTImage_V\WTImage\MainFrm.h
?????文件????????118??2018-09-28?10:11??WTImage_V\WTImage\MainShape.cpp
?????文件????????351??2018-09-28?10:17??WTImage_V\WTImage\MainShape.h
?????文件???????4745??2018-09-26?17:08??WTImage_V\WTImage\ReadMe.txt
?????文件????????598??2018-09-29?21:35??WTImage_V\WTImage\res\bmp00001.bmp
?????文件????????478??2018-09-29?23:41??WTImage_V\WTImage\res\bmp00002.bmp
?????文件????????958??2018-10-08?10:58??WTImage_V\WTImage\res\bmp00003.bmp
?????文件????????326??2018-10-11?15:21??WTImage_V\WTImage\res\cur00001.cur
?????文件????????326??2018-10-11?15:26??WTImage_V\WTImage\res\cur00002.cur
?????文件????????326??2018-10-11?15:41??WTImage_V\WTImage\res\cursor1.cur
?????文件????????326??2018-10-11?15:50??WTImage_V\WTImage\res\cursor2.cur
?????文件???????1318??2018-10-10?16:59??WTImage_V\WTImage\res\Toolbar.bmp
?????文件????????718??2018-10-08?09:00??WTImage_V\WTImage\res\toolbar1.bmp
?????文件??????67777??2015-09-20?17:20??WTImage_V\WTImage\res\WTImage.ico
?????文件????????670??2018-09-26?17:08??WTImage_V\WTImage\res\WTImage.rc2
?????文件???????4710??2015-09-20?17:20??WTImage_V\WTImage\res\WTImageDoc.ico
............此處省略33個文件信息
- 上一篇:學生管理系統C語言版
- 下一篇:十個游戲C語言源代碼
評論
共有 條評論