vc mysql保存图片_vc++图像保存,重绘

在VC++的MFC应用程序中,创建一个单文档应用并实现绘图功能。通过新的类来保存图形的类型、起点和终点。使用CObArray或CPtrArray作为集合类存储图形对象。然而,当窗口重绘或移动时,原始图形对象可能已析构,导致问题。解决方案是使用指针在堆上保存对象,确保其在集合类中保持有效。此外,讨论了如何处理窗口的重绘和滚动功能,并涉及图形坐标空间的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新建mfc应用程序,单文档

增加绘图

9cbbb26191155299863fe127cf67d3f6.png

分别增加命令响应

添加成员变量UINIT

f0ef0d4bc508e702269db6c317bdd73c.png

27a113d32b74c4c566294527fbc553f8.png

图形可以运行,如何保存呢?(一个集合类,CPtArt)

6658b211f9074c74195b4d5ae86546b7.png

用一个类的对象来保存一个图形的三个要素

所以插入一个新的类(通常的类)

fb7cb37264ffe4d3dcc716996f01d4dd.png

增加三个成员变量,第一个类型,设置为公有的

1561b3983349123f44f734addfe5f933.png

也可以在函数中直接写,添加起点,终点

15d969813dffa07e1dcd660bb0eee2a3.png

让用户在构造的时候直接传递进来给这三个成员变量赋值

fdb52b952485cdac739d2ffae5e24f98.png

然后在原文件当中,对成员变量进行赋值

56006d6bbedcbfa9877f73a893651887.png

(这样构造一个类的对象来保存一个图形的三个要素)

要想增加一个指针用add,要想取出原数用GetAt

CObArray

可以利用CPtrArray存储一个对象的地址

首先构造一个graph对象,在添加一个成员变量

eb45fdba10c26e43ffcb1d8b48be8ee7.png

用集合类的对象调用add方法保存

8ebd861d68c3196d0b143a6da810ef44.png

将集合类元素中的取出来

首先创建一个画刷(将onbuttonup中的这一句复制到ondraw中)

9d3c593f69e86dd6a49614ef0992f72e.png

e14372bbdb06a6f7891fe7b560ee6ff0.png

将透明的画刷选到设备描述表中

651424a3b8b9f3c5270d81c5b0a3fcaf.png

做一个for循环将集合类当中的取出来(做一个switch语句根据所保存的绘画类型去绘制图形)

a3cbbc027561b6d25c0e302cf8d477db.png

虽然说保存了对象的地址,但是对象graph出了大括号就已经析构了

e0f412d440ddc5a5d3d6988f21862bc7.png

(

首先在view类中,1 构造了一个集合类的对象;

2构造了一个graph对象,是在onlbuttonup函数中构造的,是一个局部对象

在栈中分配空间

3。第三步,当调用集合类中add方法,graph对象他所在内存的地址,当执行之后会析构掉,生命周期结束

b15b09ead5d05c4d8b42359b6fd5a661.png

如何解决这个问题,用一个指针类型的变量,是用堆的保存,当被析构的时候,内容已经被传递了

7be1701d96bb1e5002af21374268f53b.png

定义指针类的对象,调用add方法

fed34845fd45349620cde13045975554.png

当窗口位置发生变化的时候,图像位置不变

2e5d01c219ddd0329c1db38233f8dbf0.png

)

当窗口重绘的时候,会调用ondraw函数(虚函数)

增加onpaint

a8f405deb112feda15c6c0f7cd0dfbfa.png

如何使窗口具有滚动能力

本程序已经有cview

找编辑菜单下的替换

294fc973447c695d534942bfee74cd76.png

e371b4c45eb99985a4f6e4a89c030cfe.png

我们设定的页面空间或者说逻辑空间的坐标点如何转换为设备空间的坐标点

四种坐标空间:世界坐标系空间,页面空间,设备空间,物理设备空间

edc00f89d66e62c2950de31fc70cc3ad.png

第七章数字信号处理仿真318-7.8/317-7.2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值