_Rekent 2016-12-20 00:56 采纳率: 26.3%
浏览 5091
已采纳

关于C#的Graphics的Paint事件

作为一名小白,最近在做一个类似画板的Winform。
通过button选择一种工具(矩形,圆,线)
然后在picturebox上通过click事件点击,直接在点击位置draw一个相应的图形。
在制作过程中,有这么几个问题:
1.这样直接draw的图形,和用paint事件的图形有什么区别,一直没怎么懂paint的用法
2.后期我想保存文件,使用DrawtoBitmap时,生成的是一张白纸(是不是和没有用paint有关)
3.能对我画的圆进行鼠标拖拽么(基于updown),如何删掉原来的图形

  • 写回答

2条回答 默认 最新

  • tang_cheng 2016-12-20 01:26
    关注
    1. 这和windows的机理有关。在windows系统中所有的窗口,子窗口,控件等都是属于一种叫做"窗口"的对象。这个对象会接收很多消息,比如鼠标消息,绘画消息,定时消息等,对不同的消息的不同处理就形成了你所用的按钮,文本框等等各种控件。 但是"窗口"有个最基本的消息就是Paint消息,当有其他窗口层叠在它之上然后移开,或者它的大小改变,或它的显示模式改变都会自动触发这个消息,调用内部函数重新绘制"窗口"。 如果你没在paint消息里绘制,只是直接用draw绘制的东西,在用另一个窗口遮挡然后移开后,会变回原来的图案(一般就是空白)。
    2. DrawtoBitmap应该是调用Paint类消息绘制的。
    3. 拖拽的如果只是线条的话,一般可以采用XOR方式绘制两次就可消除。如果是图形的话,一般是调用窗口的Invalidate函数强制触发Paint消息,在重绘的时候把拖动的图用新的坐标绘制一下。其他图保留原始位置
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿