2012-04-05 35 views
1

我開始了一個非常基本的XNA 4.0程序,我通過內容加載器加載了一個小紅點圖像。紅點爲10x10,並在邊緣處變圓,使其看起來圓潤。我在屏幕上繪製它,並將它的X和Y位置更新爲鼠標的X和Y位置。所以基本上它是一個自定義的紅色光標。XNA Basic Paint程序

現在我的問題是: 我該如何使用這個光標作爲畫筆?當我點擊鼠標左鍵時,我希望它繪製到當前屏幕大小的空白Texture2D背景上。它的功能就像MSPAINT中的畫筆一樣。

我想我會需要一個Vector2點的數組來保存鼠標移過的點,並且對於這些點中的每一個點,當更新發生時它都會繪製背景Texture2D上的點?

這可能不是很有效率,但這是我當時所能想到的。

我也讀過更改Texture2Ds的顏色數據,但唉,沒有運氣。

+0

爲什麼不保存誰的畫布的內存圖像,只要你添加「繪製」一個新的點更新圖像,所以刷新將只需要繪製圖像的一部分圖像...任何方式我是在XNA中無能爲力,所以這只是一個想法,不確定它在這裏是否有效。 – 2012-04-05 13:15:32

+0

以與您擁有此功能的其他任何程序相同的方式實施它。你使用XNA並不是特別的。如果你不知道如何開始,那麼你的聯盟就會去僱用一個知道他們在做什麼的人。我的意思是你有一個計算機科學學位,你聲稱你有使用DirectX的經驗,有些事告訴我你的個人資料充滿了謊言。 – 2012-04-05 14:56:11

+0

Ramhound, 對不起,你覺得那樣,但我認爲這有點苛刻,看看我的投資組合,如果你不相信我http://www.sourcemodding.com/portfolio/index。html 我可以理解你的懷疑態度,因爲這是我在stackoverflow上的第一篇文章,也就是說你沒有權利聲稱我的個人資料「充滿了謊言」。Stackoverflow是一個以其高度有用的公民而聞名的知名社區。爲了您的信息以及Ramhound,Ive花了最後的4-5小時努力弄清楚,我終於弄明白了。下次嘗試並多一點理解。謝謝 – TheFooFighter 2012-04-05 16:39:54

回答

1

對於那些誰感興趣的我如何成功地「畫」在屏幕上的整個代碼庫可以在這裏找到 https://[email protected]/thefoofighter/paint.git

它當然最好的方式來處理我的問題,但它做什麼,我需要這樣做,因爲我不需要擔心優化與更大的程序即時通訊端口,我沒有嘗試過使它更好。

上面的Git有一個自述文件,提供有關更改和優化的更多信息。

3

我從來沒有嘗試用XNA繪畫,但喜歡這個主意! 所以我周圍環顧了一下,發現了這個回答的問題,誰知道它可能就是你需要的! 祝你好運與你的遊戲。 XNA draw/paint onto a Texture2D at runtime

+0

我設法弄清楚了你不是從上面提供的鏈接,但它導致我最終解決了這個問題。如果你有興趣,你可以查看我自己的問題的答案:)。 謝謝 – TheFooFighter 2012-04-05 16:41:44

+0

沒問題,但你確實知道你可以給你的問題添加一個真實的答案並接受它? 使事情更清晰;) – phadaphunk 2012-04-05 16:45:42

+0

我想我知道你的意思是「回答我自己的問題」?我嘗試過,但我需要等4個小時,因爲我是一個新用戶之前,我可以。我會這樣做,當4過去了:)如果你想看看它,但它可以在這裏找到https://[email protected]/thefoofighter/paint.git – TheFooFighter 2012-04-05 16:49:06

0

在loadContent:

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

在抽獎:
- 將此渲染目標
- 畫刷在currentPosition
- 取消設置渲染目標
- 繪製渲染目標

這樣您就不需要將rendertarget中的數據設置/取消設置到紋理上,也不需要跟蹤前景我們的立場。