1
A
回答
1
對於WPF和Silverlight WriteableBitmap的
http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap.aspx
WriteableBitmapEx庫。試圖彌補與擴展方法,很容易使用像內置的方法,並提供GDI +一樣的功能: http://writeablebitmapex.codeplex.com/
1
在XNA這不是一般的最有效的事情,但我認爲最好的方法是可能創建紋理並使用SetData設置每個像素,並使用SpriteBatch將其渲染到屏幕上。
SpriteBatch spriteBatch;
Texture2D t;
Color[] blankScreen;
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
//initialize texture
t = new Texture2D(GraphicsDevice, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, false, SurfaceFormat.Color);
//clear screen initially
blankScreen = new Color[GraphicsDevice.Viewport.Width * GraphicsDevice.Viewport.Height];
for (int i = 0; i < blankScreen.Length; i++)
{
blankScreen[i] = Color.Black;
}
ClearScreen();
}
private void Set(int x, int y, Color c)
{
Color[] cArray = { c };
//unset texture from device
GraphicsDevice.Textures[0] = null;
t.SetData<Color>(0, new Rectangle(x, y, 1, 1), cArray, 0, 1);
//reset
GraphicsDevice.Textures[0] = t;
}
private void ClearScreen()
{
//unset texture from device
GraphicsDevice.Textures[0] = null;
t.SetData<Color>(blankScreen);
//reset
GraphicsDevice.Textures[0] = t;
}
protected override void Draw(GameTime gameTime)
{
spriteBatch.Begin();
spriteBatch.Draw(t, Vector2.Zero, Color.White);
spriteBatch.End();
base.Draw(gameTime);
}
有了這個功能,您可以在更新或繪圖中隨時調用Set或ClearScreen。您可能需要使用紋理索引(我在本例中只使用了0,可能不適合您),並且您只需要每幀取消一次/復位一次,以便根據您的使用方式進行優化他們。
相關問題
- 1. 如何使用每個像素的RGB值創建圖像
- 2. 如何創建每像素24位的內存DC?
- 3. 如何創建s.th.像在java中的函數輸出流?
- 4. 如何在Perl中創建列輸出?
- 5. 如何在JAVA中創建JSON輸出
- 6. 如何在SQL中創建此輸出
- 7. MATLAB - 如何爲環狀計算每次迭代創建輸出
- 8. 如何使用每行中的觀察值數創建輸出?
- 9. 在圖像上創建文本溢出
- 10. 如何在圖像上創建圖層?
- 11. 創建輸出
- 12. 如何創建像素值數組?
- 13. 如何創建ARGB_8888像素值?
- 14. 如何修改創建的輸出DOM元素?
- 15. 基於JSON輸出創建圖像
- 16. 創建由像素
- 17. 盜:如何創建從圖像輸入
- 18. 如何創建上的每個節點
- 19. 如何爲php文件輸出創建圖像
- 20. 如何從java applet視覺輸出創建圖像?
- 21. 如何在每個像素中創建包含信息的位圖?
- 22. 如何從rrdcgi創建PDF輸出?
- 23. 如何創建少輸出列表?
- 24. Javascript創建方法 - 如何輸出
- 25. 如何從JSON創建CSV輸出?
- 26. 創建輸出組
- 27. 創建JSON輸出
- 28. 如何在純Javascript中創建簡單的輸入和輸出
- 29. bash - 在新行上輸出每個數組元素
- 30. 如何在document.ready上處理在document.ready上創建的元素