簡體   English   中英

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 數組中並將其寫入 WriteableBitmap。 將 WriteableBitmap 設置為 WPF Image 的圖像源,您就完成了。

如果您需要示例,請告訴我。

您可能想要做的是使用 LockBits 來鎖定您的圖像數據,然后將您的圖像作為數組進行操作。 這是 Bob Powell 的精彩教程:

https://web.archive.org/web/20121203144033/http://www.bobpowell.net/lockingbits.htm

否則,如果速度不是問題,您可以使用 GetPixel 和 SetPixel 方法。 雖然這些非常慢,但可以在托管環境中工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM