绘制任意线条:
1、创建基于单文档工程:Draw
CDrawView类中添加成员变量:
CPoint m_ptOrigin;
BOOL m_bDraw;
2、CDrawView()中初始化:
m_ptOrigin = point;
m_bDraw = false;
3、添加消息响应函数:
WM_LBUTTONDOWN WM_LBUTTONUP WM_MOUSEMOVE
4、左键按下时:
m_ptOrigin = point;
m_bDraw = true;
5、左键抬起:
m_bDraw = false;
6、鼠标移动时:
//画连续线条
CClientDC dc(this);
if(m_bDraw)
{
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
m_ptOrigin = point;
}
//画扇形线条
CClientDC dc(this);
if(m_bDraw)
{
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
}
//画带外包线的扇形线条
析:画带外包线的扇形线条,不光记录初始位置,还要记录鼠标移动上一位置。
添加成员变量:
CPoint m_ptOld;
在鼠标左键按下时初始化:
m_ptOld = point;
在鼠标移动时进行改变:
CClientDC dc(this);
if(m_bDraw)
{
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptOld);
dc.MoveTo(m_ptOld);
dc.LineTo(point);
m_ptOld = point;
}
画矩形:
画无边框的矩形
方法说明:利用FillRect函数填充矩形。填充内容为画刷的内容,即画刷对象的指针。
CBrush brush(RGB(5,255,255));
CClientDC dc(this);
dc.FillRect(CRect(m_ptOrigin,point),&brush);
以位图作为画刷的资源
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
CBrush brush(&bitmap);
CClientDC dc(this);
dc.FillRect(CRect(m_ptOrigin,point),&brush);
画有边框的矩形
方法说明:利用Rectangle方法来画矩形。其中CBrush与CPen类分别负责矩形内部和矩形边框的属性
//画中心为白色的矩形
CClientDC dc(this);
dc.Rectangle(CRect(m_ptOrigin,point));
//画中心为透明的矩形
CClientDC dc(this);
CBrush *pBrush=CBrush::FromHandle((HBRUSH)
GetStockObject(NULL_BRUSH));
CBrush *pOldBrush=dc.SelectObject(pBrush);
dc.Rectangle(CRect(m_ptOrigin,point));
pOldBrush=pBrush;
//画中心为透明边为任意颜色的矩形
CClientDC dc(this);
CPen pen(PS_SOLID,1,RGB(234,23,53));
CPen *pOldPen=dc.SelectObject(&pen);
CBrush *pBrush=CBrush::FromHandle((HBRUSH)
GetStockObject(NULL_BRUSH))
CBrush *pOldBrush=dc.SelectObject(pBrush);
dc.Rectangle(CRect(m_ptOrigin,point));
dc.SelectObject(pOldPen);
dc.SelectObject(pOldBrush);
使用画笔、画刷
在OnLButtonUp函数中:
/////////////////////////////////////////////////////////////////
CPen pen(PS_SOLID,1,RGB(234,23,53));
//定义一个CPen类对象,并利用RGB宏改变其颜色
CClientDC dc(this);
CPen *pOldPen=dc.SelectObject(&pen); //将其选入设备表
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
dc.SelectObject(pOldPen);
/////////////////////////////////////////////////////////////////
CBrush brush(RGB(0,255,0));
CClientDC dc(this);
CRect rect(m_ptOrigin,point);
dc.FillRect(&rect,&brush);
/////////////////////////////////////////////////////////////////
使用位图创建画刷:
插入->资源->位图->引入,可以引入位图,初始一般命名为:IDB_BITMAP1
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
CBrush brush(&bitmap);
CClientDC dc(this);
CRect rect(m_ptOrigin,point);
dc.FillRect(&rect,&brush);
/////////////////////////////////////////////////////////////////
CBrush *brush;
brush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
CClientDC dc(this);
CBrush *pOldBrush =dc.SelectObject(brush) ;
dc.Rectangle(CRect(m_ptOrigin,point));
dc.SelectObject(pOldBrush) ;
注:
常用的绘图设备类对象的创建和将其引入到设备环境中的方法
在选择绘图设备类对象(GDI对象)进行绘图时,一般可按下列步骤进行:
(1)定义一个GDI对象,然后调用相应的函数(如CreatePen、CreateSolidBrush等)创建此GDI对象。
(2)将已构造出的GDI对象利用设备环境类对象的成员函数SelectObject选入到当前环境中,并同时将原来的GDI对象保存起
来。
(3)绘图结束后,恢复当前设备环境中原来的GDI对象。
注意:在Windows系统中包含了一些库存的GDI对象,在第(3)步中可直接利用设备环境类(CDC)的成员函数
SelectStockObject将一个Windows库存的GDI对象选入,系统可自动将原来选入的GDI对象从设备环境中分离出来。
没有合适的资源?快使用搜索试试~ 我知道了~
C++截图程序源码
共98个文件
tlog:25个
h:9个
ico:8个
需积分: 29 30 下载量 13 浏览量
2019-01-24
09:37:56
上传
评论
收藏 43.15MB RAR 举报
温馨提示
改代码实现了截图功能,任选桌面区域保存或复制到剪切板。
资源推荐
资源详情
资源评论
收起资源包目录
截图程序源码.rar (98个子文件)
截图
截图
src
Release
ScreenShotTool.exe 193KB
ScreenShotTool.pdb 5.31MB
UpgradeLog.XML 2KB
ScreenShotTool.suo.old 19KB
ipch
screenshottool-84a86094
screenshottool-61ee7be2.ipch 104.5MB
Backup
ScreenShotTool
ScreenShotTool.sln 908B
ScreenShotTool.v12.suo 19KB
ScreenShotTool.suo 32KB
ScreenShotTool
ReadMe.txt 3KB
ScreenShotTool.vcproj 7KB
CMagnifyDlg.cpp 5KB
ScreenShotTool.h 493B
Release
ScreenShotTool.vcxprojResolveAssemblyReference.cache 707B
CL.write.1.tlog 4KB
ScreenShotTool.write.1.tlog 0B
mt.read.1.tlog 1KB
ScreenShotTool.exe.intermediate.manifest 651B
ScreenShotTool.obj 60KB
mt.read.2.tlog 2KB
link-cvtres.write.1.tlog 2B
CMagnifyDlg.obj 62KB
EnumAllWindowsRect.obj 130KB
rc.command.1.tlog 764B
ScreenShotTool.lastbuildstate 84B
link.command.1.tlog 3KB
vc100.pdb 3.78MB
CL.read.1.tlog 78KB
mt.write.1.tlog 522B
link-cvtres.read.1.tlog 2B
ScreenShotTool.Build.CppClean.log 969B
CRectTrackerEx.obj 15KB
rc.read.1.tlog 4KB
ScreenShotTool.log 2KB
stdafx.obj 721KB
mt.command.1.tlog 888B
link.write.1.tlog 2KB
ScreenShotToolDlg.obj 334KB
ScreenShotTool.tlog
CL.write.1.tlog 4KB
rc.command.1.tlog 800B
ScreenShotTool.lastbuildstate 185B
link.command.1.tlog 3KB
CL.read.1.tlog 86KB
rc.read.1.tlog 4KB
link.write.1.tlog 2KB
cl.command.1.tlog 5KB
rc.write.1.tlog 358B
link.read.1.tlog 7KB
cl.command.1.tlog 5KB
ScreenShotTool.pch 36.88MB
rc.write.1.tlog 322B
ScreenShotTool.res 127KB
link.read.1.tlog 6KB
res
ScreenShotTool.ico 95KB
ScreenShotTool.rc2 370B
ico
OK.ico 4KB
Save.ico 4KB
Exit.ico 4KB
Line.ico 4KB
Rect.ico 4KB
Cancel.ico 4KB
Pen.ico 4KB
ScreenShotTool.vcproj.Jo-PC.Jo.user 1KB
ScreenShotTool.vcproj.admin-PC.admin.user 1KB
ScreenShotTool.cpp 2KB
stdafx.h 2KB
CRectTrackerEx.cpp 1KB
ScreenShotTool.vcxproj.filters 3KB
stdafx.cpp 147B
ScreenShotTool.vcxproj 9KB
CMagnifyDlg.h 1KB
ScreenShotTool.aps 165KB
resource.h 2KB
ScreenShotToolDlg.h 7KB
ScreenShotToolDlg.cpp 43KB
ScreenShotTool.vcxproj.user 143B
EnumAllWindowsRect.cpp 5KB
EnumAllWindowsRect.h 759B
targetver.h 1KB
CRectTrackerEx.h 240B
ScreenShotTool.rc 6KB
define.h 2KB
ScreenShotTool.sdf 71.64MB
ScreenShotTool.sln 909B
ScreenShotTool.sln.old 908B
_UpgradeReport_Files
UpgradeReport.css 3KB
UpgradeReport_Plus.gif 71B
UpgradeReport.xslt 12KB
UpgradeReport_Minus.gif 69B
ScreenShotTool.v12.suo 49KB
UpgradeLog.htm 40KB
bin
ReadMe.txt 541B
ScreenShotTool.exe 200KB
doc
StretchBlt拉伸压缩位图拷贝.docx 15KB
获取桌面所有窗口.docx 14KB
获取窗口句柄.txt 470B
AlphaBlend透明.docx 16KB
画图.txt 4KB
MFC模态对话框和非模态对话框.docx 27KB
共 98 条
- 1
资源评论
小雨滴答滴答
- 粉丝: 19
- 资源: 34
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 19ec93431a5b148599c01eda2a0de94f
- 一个简单的Python计算器程序 这个程序将使用基本的Python语法和功能,实现加、减、乘、除四种基本运算
- 三菱PLC例程源码FX与日立SJ300变频通讯,有注解
- Ai智能写作文章助手一键生成原创文章文案,支持安卓,PC,小程序
- 三菱PLC例程源码FX和EMERSON通讯案例FxModbustest
- 三菱PLC例程源码FX和EMERSONModbus通讯案例
- 推荐GitKraken - 超好用的 Git 可视化工具
- 一个简单的Python计算器程序案例,目的是用Python最简单的写法让大家明白Python的语法怎么用
- 三菱PLC例程源码FX防洪闸门控制程序
- pyecharts操作3.ipynb
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功