C#或C ++ - Windows图形概述的良好资源 - 2D,直接绘制像素

时间:2011-05-10 06:48:41

标签: c# c++ windows graphics

我有一个奇怪的小生命计划,我一直在研究涉及二维数组中的数据。这从来没有被认为是一件大事,我最初只是通过逐个像素地将它写到外部位图来查看它的一些快照,然后我打开并查看。这不会给我任何类型的屏幕实时更新。这是一种可怕的方式,并且在尝试直接在窗口中实现绘制时,我希望第一次正确有效地执行此操作。

我做了一些搜索并找到bitblt,这将让我一次绘制一个完整的矩形,但我的所有图形体验仅限于WPF之类的东西,很多术语都丢失了。我不知道我的数据应该是什么格式,以便将其作为位图传递给此函数。在阅读msdn时,我发现了对DC等事物的引用,还有更多我还没有学过的东西。

我不需要了解很多关于Windows图形API或.NET绘图框架的知识。我不想学习一堆DirectX。我想制作一个特定尺寸的窗口,我希望能够在我认为合适时设置每个像素的RGB值。没有图纸形状或任何东西,只有像素。但是我也不想一次只做一个像素,每个像素都需要一个单独的系统调用,因为即使是像我这样的蹩脚程序员也知道它是多么低效。有谁知道一个好的资源是否能在Windows中对图形进行简单的解释并让我这样做? MSDN非常适合查找,但如果你想从头学习东西,它会有点多。

C#更受欢迎,因为其中写有lifesim,但如果有充分的理由,我对在C ++中重写它没有任何疑虑。

2 个答案:

答案 0 :(得分:1)

您可以在WPF中尝试WriteableBitmap课程,看看它是否符合您的目的。

A tutorial

您所要做的就是将数据保存在2D数组中并将其写入WriteableBitmap。将WriteableBitmap设置为WPF图像的图像源,然后就完成了。

如果您需要一个例子,请告诉我。

答案 1 :(得分:0)

您可能想要做的是使用LockBits锁定图像数据,然后将图像作为数组进行操作。这是鲍勃鲍威尔的一个很棒的教程:

http://www.bobpowell.net/lockingbits.htm

否则,如果不关心速度,可以使用GetPixel和SetPixel方法。但这些速度非常慢,但可以在托管环境中工作。