C# 或 C++ - 概述 Windows 图形的良好资源 - 2D,直接绘制像素
C# or C++ - Good Resource for an Overview on Windows Graphics - 2D, drawing pixels directly
我一直在研究一个奇怪的小生活模拟程序,它涉及二维数组中的数据。这从来都不应该是一件大事,我最初只是通过将其写到外部位图上来查看它的一些快照,逐个像素,然后我打开并查看。这不会给我任何形式的屏幕实时更新。这是一种可怕的方法,在尝试直接在窗口中实现绘制时,我想第一次正确有效地执行此操作。
我做了一些搜索并找到了bitblt,它可以让我一次绘制一个完整的矩形,但是我所有的图形经验都仅限于WPF之类的东西,很多术语对我来说都丢失了。我不知道我的数据应该是什么格式才能将其作为位图传递给此函数。在阅读 msdn 时,我发现了对 DC 等内容的引用,还有更多我尚未了解的东西。
我不需要了解很多关于 Windows 图形 API 或 .NET 的绘图框架。我不想学习一堆DirectX。我想制作一个特定尺寸的窗口,我希望能够根据需要设置每个像素的 RGB 值。没有绘图形状或任何东西,只有像素。但是我也不想一次做一个像素,每个像素都有一个单独的系统调用,因为即使是像我这样蹩脚的程序员也知道这是多么低效。有谁知道是否是一个很好的资源,可以对 Windows 中的图形进行简单的解释并让我这样做?MSDN 非常适合查找内容,但如果您想从头开始学习一些东西,那就有点多了。
C# 更可取,因为用它编写的 lifesim,但如果有充分的理由,我对用 C++ 重写它没有任何疑虑。
您可以在 WPF 中尝试 WriteableBitmap 类,看看它是否符合您的目的。
教程
您所要做的就是将数据保存在 2D 数组中并将其写入可写位图。将"可写位图"设置为"WPF 图像"的图像源,就完成了。
如果您需要示例,请告诉我。
想要做的是使用 LockBits 锁定图像数据,然后将图像作为数组进行操作。这是鲍勃鲍威尔的一个很棒的教程:
https://web.archive.org/web/20121203144033/http://www.bobpowell.net/lockingbits.htm
否则,如果速度不是问题,则可以使用 GetPixel 和 SetPixel 方法。这些速度非常慢,但可以在托管环境中工作。
- 具有瞬态资源的RAII类
- 2D数组来自文本输入,中间有空格
- 将值指定给向量(2D)的向量中的某个位置
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 如何使用用户输入在C++中正确填充2D数组
- 如何在C++中检查2D数组中负值的输入验证
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- 允许从 std::map 的密钥窃取资源?
- 参考资源文件VC++中的$(SolutionDir)
- 在 2D 向量中使用第三个 [ ] 有什么意义?
- 如何维护资源管理器项目视图中当前可见的项目列表
- 四边形的 2D 旋转
- 打印第二列时的2d字符矢量打印空间
- 将 std::allocate_shared 与多态资源分配器一起使用
- 使用RAII在给定次数的迭代后重新分配资源
- 资源管理设计模式
- 如何将以逗号和空格分隔的整数读取到 2D 数组中?
- 如何跨平台将二进制资源构建到程序中?
- C# 或 C++ - 概述 Windows 图形的良好资源 - 2D,直接绘制像素
- 关于2D游戏引擎设计有哪些很好的资源