c# - 如何编辑窗口中的单个像素?

标签 c# memory screen pixel

我想创建一个简单的视频渲染器来玩,并做一些诸如创建移动操作系统之类的事情,只是为了好玩。我父亲告诉我,在第一台计算机中,您可以编辑特定的内存地址,屏幕就会更新。我想在 Windows 的窗口内模拟这个。有什么办法可以用 C# 做到这一点吗?

最佳答案

过去这样做是因为您可以直接访问视频缓冲区。这在当今的系统中通常不可用,因为视频内存由视频驱动程序和操作系统管理。此外,视频内存缓冲区和显示内容之间确实不再存在 1:1 映射。有了如此多的可用内存,就可以拥有多个缓冲区并在它们之间进行切换。当前显示的缓冲区称为“前缓冲区”,其他未显示的缓冲区称为“后缓冲区”(有关更多信息,请参阅 https://en.wikipedia.org/wiki/Multiple_buffering )。我们通常写入后台缓冲区,然后让视频系统为我们更新前台缓冲区。这提供了平滑的更新,因为视频驱动程序将更新与显示器的扫描速率同步。

要使用 C# 写入后台缓冲区,我最喜欢的技术是使用 WPF WritableBitmap 。我还使用 System.Drawing.Bitmap 通过 LockBits 向屏幕写入像素来更新屏幕。 .

关于c# - 如何编辑窗口中的单个像素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3120768/

相关文章:

c# - .net常规错误异常支持newvalidContext上下文的模型

C#在游戏应用程序中保持关键

c - malloc的输出内存地址

java - eclipse java中三种不同方法增加JVM堆内存失败

c# - 向数组添加字节删除大写字母

c# - WCF With NetTCP 跨同一网络上的机器

memory - 评估 GNAT 2012 中裸板的内存使用情况

gtk - 使用 GdkFrameClock 将 GtkDrawingArea 与屏幕刷新率同步

android - 如何将动态壁纸缩放到屏幕大小?

javascript - 如何在javascript中检测android手机或标签?