资源简介
使用C/C++编写的简易画图程序
功能:①绘制线,矩形,椭圆,文本
②保存图元到文件,并能够从文件加载图像
③能够通过鼠标点击选中图形,并进行属性的修改,修改的内容可包括:
修改图元的大小,位置,画笔画刷属性,文本的字体和内容,删除图形
【使用了动态缓冲绘图方法,能够通过鼠标右键精确选中图形,纯WinSDK,不是MFC!!!】
【实验五,山大威海】

代码片段和文件信息
/*******************************************************************
程序:实验五
文件:func.cpp
功能:绘图
时间:2016.05.11
********************************************************************/
#include
#include “resource.h“
#include“func.h“
#include
#include
void DrawMyLine(HDC hdc PMYPIC pLine) // 绘制一条线
{
HPEN hPen = CreatePenIndirect(&(pLine->logpen));
HPEN hPenOld = (HPEN)Selectobject(hdc hPen);
MoveToEx(hdc pLine->ptS.x pLine->ptS.y NULL);
LineTo(hdc pLine->ptE.x pLine->ptE.y);
Selectobject(hdc hPenOld);
Deleteobject(hPen);
}
void DrawMyRect(HDC hdc PMYPIC pRect) // 绘制一个矩形
{
HPEN hPen = CreatePenIndirect(&(pRect->logpen));
HPEN hPenOld = (HPEN)Selectobject(hdc hPen);
HBRUSH hNewBrush = CreateBrushIndirect (&(pRect->logbrush));
HBRUSH hOldBrush = (HBRUSH)Selectobject (hdc hNewBrush);
Rectangle(hdcpRect->ptS.xpRect->ptS.ypRect->ptE.xpRect->ptE.y);
Selectobject(hdc hPenOld);
Deleteobject(hPen);
Selectobject(hdchOldBrush);
Deleteobject(hNewBrush);
}
void DrawMyEll(HDC hdc PMYPIC pRect) // 绘制一个椭圆
{
HPEN hPen = CreatePenIndirect(&(pRect->logpen));
HPEN hPenOld = (HPEN)Selectobject(hdc hPen);
HBRUSH hNewBrush = CreateBrushIndirect (&(pRect->logbrush));
HBRUSH hOldBrush = (HBRUSH)Selectobject (hdc hNewBrush);
Ellipse(hdcpRect->ptS.xpRect->ptS.ypRect->ptE.xpRect->ptE.y);
Selectobject(hdc hPenOld);
Deleteobject(hPen);
Selectobject(hdchOldBrush);
Deleteobject(hNewBrush);
}
void DrawMyText(HDC hdcPMYPIC pText) //画文字
{
HFONT hFont=CreateFontIndirect(&(pText->logfont));
HFONT hFontOld = (HFONT)Selectobject (hdc hFont);
SetTextColor(hdcpText->textColor);
TextOut(hdc(pText->ptS.x+pText->ptE.x)/2(pText->ptS.y+pText->ptE.y)/2pText->szTextlstrlen(pText->szText));
GetTextExtentPoint32 (hdcpText->szText lstrlen (pText->szText) &pText->size);
Selectobject(hdchFontOld);
Deleteobject (hFont);
}
int Sum_Pics(PMYPIC pPicint len)//返回现有图片总数
{
for (int i=0;i {
if (pPic[i].order==0)
return i;
}
return 0;//保留
}
void DrawAll(HDC hdc PMYPIC pPicint count)//画所有图像,包括线,矩形,椭圆
{
for (int i=0;i {
if(pPic[i].DrawObj==0)break;
switch (pPic[i].DrawObj)
{
case ID_PIC_LINE:DrawMyLine(hdc&(pPic[i]));break;
case ID_PIC_RECT:DrawMyRect(hdc&(pPic[i]));break;
case ID_PIC_ELL: DrawMyEll(hdc&(pPic[i]));break;
case ID_PIC_TEXT:DrawMyText(hdc&(pPic[i]));break;//
default: break;
}
}
}
void SaveData(PMYPIC pPicint len)//保存图像到文件
{
FILE* fp;
errno_t err;
if((err=fopen_s(&fp“data.bin““wb+“))==0)
{
fwrite(pPicsizeof(*pPic)lenfp);
fclose(fp);
MessageBox(NULL L“保存成功!“L“提示“MB_ICONEXCLAMATION|MB_OK);
}
else MessageBox(NULL L“保存失败!“L“Error!“MB_ICONEXCLAMATION|MB_OK);;
}
void ClearArg(PMYPIC pPicint len)//清空储存图像的数组
{
for(int i=0;i {
pPic[i].ptS.x=0;
pPic[i].ptS.y=0;
pPic[i].ptE.x=0;
pPic[i].ptE.y=0;
pPic[i].logpen.lopnColor
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-05-29 17:47 Debug\
文件 57344 2016-05-29 17:46 Debug\实验五.exe
目录 0 2016-05-29 17:47 实验五\
文件 894 2016-05-29 17:45 实验五.sln
文件 23552 2016-05-29 17:47 实验五.v11.suo
文件 6202 2016-05-26 13:06 实验五\func.cpp
文件 1279 2016-05-15 12:56 实验五\func.h
文件 1886 2016-05-12 12:59 实验五\ICON1.ico
文件 766 2016-05-26 12:38 实验五\lmove.cur
文件 16594 2016-05-29 17:44 实验五\main.cpp
文件 326 2016-05-12 13:20 实验五\POINTER.cur
文件 4396 2016-05-29 17:46 实验五\resource.h
文件 13678 2016-05-13 21:14 实验五\实验五.rc
文件 4466 2016-05-29 17:46 实验五\实验五.vcxproj
文件 1687 2016-05-29 17:46 实验五\实验五.vcxproj.filters
- 上一篇:C++数值算法 C数值算法 的随书代码
- 下一篇:SIFT检测特征点及特征点描述
相关资源
- 北京化工大学计算方法(C/C++)讲义
- GBT 28169-2011 嵌入式软件 C语言编码规范
- XUnZip Zip解压缩.rar
- Windows_API_函数大全 C/C++
- C语言程序设计教材习题参考答案.do
- 基于MFC的VC++仿QQ浏览器源码(雏形)
- 高效FFT的C/C++代码实现包括基2的DIF和
- c/c++开发网络验证和本地验证
- 操作系统存储管理实验报告c/c++
- C++编写的万年历源码
- 超级玛丽c++源码win32Linux平台
- [纯C语言 + Win32 API]一步一步写个围棋
- C语言进阶源码---基于graphics实现图书
- 井字棋三连棋的AI实现,C/C++
- C++ 游戏疯狂的赛车
- Win32多线程程序设计--详细书签版
- 《水果忍者》设计报告.doc
- MFC实现的红绿灯程序
- C++网络爬虫项目
- 泡泡堂(炸弹人)小游戏C/C++完整源码
- 我见过最漂亮的CS仿真程序openGL和C+
- 使用C/C++读取BITMAP的内容
- libcurl-7.19.3-win32-ssl-msvc.zip
- VC图像处理-用Canny算子提取边缘
- C/C++视频教程
- 个人总结的一些C/C++编码规范
- 高斯消去法求解线性方程组C/C++程序输
- celrityC/C++源码查看工具
- 网络编程MFC 实验四 FTP客户端功能实现
- C/C++语言大作业、小游戏
评论
共有 条评论