XNA Basic Paint程序

时间:2012-04-05 13:04:49

标签: c# xna draw paint brush

我启动了一个非常基本的XNA 4.0程序,我通过Content loader加载一个小的红点图像。红点为10x10,边缘呈圆形,使其看起来圆润。我在屏幕上绘制它并将其X和Y位置更新为鼠标的X和Y位置。所以基本上它是一个自定义的红色光标。

现在我的问题是: 我如何将这个光标用作画笔?当我单击鼠标左键时,我希望它绘制到当前屏幕大小的空白Texture2D背景上。它的功能就像MSPAINT中的画笔一样。

我想我需要一个Vector2点数组来保存鼠标移过的点,对于每个点,当更新发生时它会在背景Texture2D上绘制点?

这可能不是很有效但是我当时想到的都是。

我也读过改变Texture2Ds的颜色数据,但唉没有运气。

3 个答案:

答案 0 :(得分:3)

我从来没有尝试过用XNA绘画,但喜欢这个想法! 所以我环顾了一下,发现了这个已回答的问题,谁知道它可能正是你所需要的! 祝你的游戏好运。 XNA draw / paint onto a Texture2D at runtime

答案 1 :(得分:1)

对于那些对我如何设法在屏幕上“绘画”感兴趣的人,可以在这里找到整个代码库 https://thefoofighter@github.com/thefoofighter/paint.git

它解决我的问题当然是最好的方法,但它做了我需要做的事情,因为我不需要担心使用更大的程序进行优化我将其移植到我没有尝试过更好。

上面的Git有一个自述文件,它提供了有关更改和优化的更多信息。

答案 2 :(得分:0)

在loadContent:

var renderTarget = RenderTarget2D(graphicsDevice, width, height, false, SurfaceFormat.Color, DepthFormat.None, 0, RenderTargetUsage.PreserveContents);

平局:
- 设置此rendertarget
- 在currentPosition上绘制画笔 - 取消设置rendertarget
- 绘制rendertarget

这样您就不需要将渲染图中的数据设置/取消设置到纹理上或跟踪以前的位置。