资源简介
在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语言源代码
相关资源
- 基于MFC的TCP调试助手源码95706
- 基于mfc的多线程文件传输
- MFC数字钟(基于VC6.0)
- VC++MFC小游戏实例教程(实例)+MFC类库
- ChartCtrl控件库(可在VS2019中使用)
- 商品库存管理系统 C++ MFC
- mfc 调用redis
- MFC视频播放器源码(支持avi/wma/mp3等格
- mfc绘图大全(画直线、矩形、椭圆)
- MFC控件重绘
- hook,捕获所有案件,查找所有窗口,
- (学习)VS2010之MFC入门到精通教程
- MFC文档_视图_框架_模板结构体系深入
- 简单员工管理系统(适合初学MFC)
- MFC五子棋游戏
- MFC UDP编程
- MFC的异步网络通讯应用程序
- C++MFC模块讲解,黑发程序员课程整理
- 一个简单而强大的基于MFC的web server源
- 基于MFC的VC++仿QQ浏览器源码(雏形)
- MFCaccess.rar
- VC++MFC课程设计的学生成绩管理系统
- MFC 日历控件 万年历 Calendar自绘
- CrystalDiskInfo-HDD/SSD硬盘信息,SMART信息
- MFC自定义界面HUI,高效简单,含详细
- 仿射密码-Affine cipher
- c++MFC车牌自动识别定位,只能定位和
- mfc+sql 酒店客房管理系统
- 基于图割的图像分割OpenCV+MFC实现
- MFC绘制Bezier曲线B样条曲线曲线拟合
评论
共有 条评论