[問題] 小畫家油漆桶功能
請問小畫家中的油漆桶
填滿顏色的功能該如何使用
看過板上的一些文章
但還是找不到解答
請教板上大大幫忙解答 感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.244.25.54
※ 編輯: AZHI 來自: 60.244.25.54 (09/07 01:11)
→
09/07 23:40, , 1F
09/07 23:40, 1F
→
09/08 10:13, , 2F
09/08 10:13, 2F
→
09/08 11:20, , 3F
09/08 11:20, 3F
現在想先利用油漆桶填滿整個Picturebox
程式碼如下
private void flood(int x, int y)//油漆桶mouse_move所使用
{
Rectangle rect2 = new Rectangle(x, y, 5, 5);
if (x >= 0 && x < width && y >= 0 && y < height)
{
g.FillEllipse(pencil, rect2);
flood(x + 1, y);
flood(x - 1, y);
flood(x, y + 1);
flood(x, y - 5);
}
}
下面四個flood遞迴函式如果只用其中一個 可以填滿picturebox的 一直線的顏色
像是這樣
if (x >= 0 && x < width && y >= 0 && y < height)
{
g.FillEllipse(pencil, rect2);
flood(x + 1, y);
}
如果flood函式放一個以上
就會進入無線迴圈的情況...
※ 編輯: AZHI 來自: 60.244.25.54 (09/08 13:03)
推
09/08 16:14, , 4F
09/08 16:14, 4F
→
09/08 16:14, , 5F
09/08 16:14, 5F
推
09/08 16:17, , 6F
09/08 16:17, 6F
我後來設了停止條件
if (color == original_color)
{
g.FillEllipse(pencil, rect2);
Draw.FillEllipse(pencil, rect2);
flood(x + 1, y, fill_color, original_color);
flood(x - 1, y, fill_color, original_color);
flood(x, y + 1, fill_color, original_color);
flood(x, y - 1, fill_color, original_color);
}
如果單跑一個flood函式(往右方擴張) 是可以的
但是往四方 或兩個方向以上 就會跑入無線迴圈...
※ 編輯: AZHI 來自: 60.244.25.54 (09/08 20:33)
→
09/09 15:51, , 7F
09/09 15:51, 7F
→
09/11 21:40, , 8F
09/11 21:40, 8F
推
09/13 07:42, , 9F
09/13 07:42, 9F
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章