作为一名小白,最近在做一个类似画板的Winform。
通过button选择一种工具(矩形,圆,线)
然后在picturebox上通过click事件点击,直接在点击位置draw一个相应的图形。
在制作过程中,有这么几个问题:
1.这样直接draw的图形,和用paint事件的图形有什么区别,一直没怎么懂paint的用法
2.后期我想保存文件,使用DrawtoBitmap时,生成的是一张白纸(是不是和没有用paint有关)
3.能对我画的圆进行鼠标拖拽么(基于updown),如何删掉原来的图形
哈哈哈,这么巧,tang_cheng的回复很棒啊,但我还是要冒个泡。
1、正好在看第一问的相关。
链接:https://my.oschina.net/u/1469992/blog/271172
cpaintdc 对象将 windows 的常见固定用语进行封装,调用 beginpaint 函数,然后在设备上下文中绘制,最后调用 endpaint 函数。cpaintdc 构造函数为您调用 beginpaint,析构函数则调用 endpaint。该简化过程将创建 cdc 对象、绘制和销毁 cdc 对象。在框架中,甚至连这个过程的大部分也是自动的。具体说来,框架给 ondraw 函数传递(通过 onpreparedc)准备好的 cpaintdc,您只需绘制到 cpaintdc 中。根据调用 ondraw 函数的返回,cpaintdc 被框架销毁并且将基础设备上下文释放给 windows。
2、引用“如果你没在paint消息里绘制,只是直接用draw绘制的东西,在用另一个窗口遮挡然后移开后,会变回原来的图案(一般就是空白)。”
3、孙鑫vc++窗口重绘用的是PTRARRAY来存储图形坐标信息,ivorhorton'sbeginning for c++用的是List。
ivor 的移动图形是在1、检测鼠标下是否有图形(因为设置了rect就很容易实现,如果有,右键菜单有move菜单,command发送消息,消息处理函数::move(Point);
没看过,但是ivor应该有c#的beginning,csdn资源应该也有0积分完整文字版pdf。