我正在构建一个使用GDI +绘制图像和形状到表单的C#应用程序,但我不知道如何删除它们。比方说,我有一个使用GDI +绘制的可选网格,当用户关闭它时,我想,关闭它,以某种方式删除它,而不会影响工作画布上的其他对象。什么是最好的方法?谢谢!删除GDI +对象
1
A
回答
3
一个简单的例子,下降一个CheckBox的形式:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
checkBox1.CheckedChanged += new EventHandler(checkBox1_CheckedChanged);
}
private void checkBox1_CheckedChanged(object sender, EventArgs e) {
this.Invalidate();
}
protected override void OnPaint(PaintEventArgs e) {
if (checkBox1.Checked) {
e.Graphics.DrawArc(Pens.Black, this.ClientRectangle, 0, 360);
}
}
}
调用Invalidate()的关键是擦除原始图形,它迫使重新绘制的形式。基类实现的默认OnPaintBackground方法将所有事情都变回战舰灰色。
1
Windows不存储您的位图输出。要删除项目,请使用标志在OnPaint()中有条件地绘制它。将该标志设置为false并在有问题的控件上调用Invalidate()。
1
另外,其他用户表示,我建议只在必要的地区使用Invalidate(region)
,而不是所有的绘图区域。
相关问题
- 1. 删除由shell32.dll创建的gdi对象 - > ExtractIconEx
- 2. 删除对象
- 3. 删除对象
- 4. 删除[]对象
- 5. 用gdi +绘制并删除线+
- 6. 删除S3对象
- 7. 删除s3对象
- 8. Python'with'not'删除对象
- 9. HttpClient删除对象
- 10. JavaScript对象删除
- 11. AS3 - 删除对象
- 12. 删除对象Coredata
- 13. 绘制GDI +图形对象
- 14. GDI对象HBRUSH半透明
- 15. 删除对象时删除线程
- 16. 使用jpa删除对象删除
- 17. 删除无法删除JSON对象
- 18. 休眠 - 删除对象引用而不删除对象
- 19. 在Django中删除子对象时删除父对象
- 20. Django的 - 删除对象,而不删除其相关对象
- 21. 如何删除对象b,设置对象a后,但不删除对象a?
- 22. Django - 删除对象,保留父对象?
- 23. NSMutableArray-删除对象和删除对象的结果删除对象和一个零元素
- 24. Spring Hibernate删除对象
- 25. 从JSONArray中删除对象
- 26. 从RecyclerView删除对象
- 27. 删除对象:: vector的
- 28. Actionscript删除显示对象
- 29. Qt:RemoveWidget和对象删除
- 30. 删除父和子对象