C#绘图消失(实际上更多的系统问题)

B.G*_*ill 1 c# drawing system

好的,我相信你们中的一些人已经知道我的头衔是怎么回事,因为我觉得这是非常常见的问题.但我的问题实际上更深一点,所以请耐心等待我.

我过去几年所做的所有编程都在Assembler中,主要是8051,AVR和C一样,但也适用于微控制器.我对HW比SW更着迷.但我也对OS的功能,它的API等着迷.几天后我告诉我的朋友,如果你有数学解析器,创建一个非常简单的程序绘制函数图应该很容易.他不相信我,所以我试图制作一个.

我决定使用C#,即使我不了解OOP.但我认为,如果我在一个按钮动作中完成所有操作,那就像是老C一样.

所以我让数学解析器工作,然后开始使用Pen对象绘制.我的第一次尝试是绘制简单的线条.在阅读了一个教程之后,我设法这样做,并为我的情节创建了简单的轴.

但是,当我最小化我的程序时,我发现了一些奇怪的东西.这让我想一想如何在系统级别完成所有绘图.

我认为系统保持活动窗口的图像直到它改变了.所以当你移动你的窗户时,它只会改变它在famebuffer中的位置.当你最小化它时,它只是在drawind到framebuffer时跳过它.

但我看到它不是这样的.那么,拜托,你能告诉我为什么会这样吗?我可以在许多教程中阅读如何防止它,但我想知道更多原因.更多,这是因为系统API如何工作,或者因为C#绘图类是如何工作的.

此外,这让我想到C#和.NET库中的功能只是调用WinAPI函数,它的工作方式完全相同,以及有多少库和函数执行更多操作.就像在GDI中没有绘制线条的功能一样,你只能画点,而C#会添加从这个点画线的功能.我希望你能理解我.

谢谢.

ste*_*nar 5

这是它在Win32 API中的工作方式.当窗口最小化时,它占用的区域变得"无效",因此Windows系统知道需要重新绘制该区域的屏幕.这导致WM_PAINT消息被发送到负责绘制该区域的Windows程序.您可以在此处阅读有关使客户区域(您的程序负责的区域)无效的更多信息.

如果你真的对这些东西感兴趣并希望更深入地了解系统如何处理绘图(以及其他东西,比如windows消息),我建议你在Win32 API上阅读更多内容,例如从Charles Petzold的经典编程Windows开始.