(新增功能和玩弄一個基本的塗料應用程序)我發現了詳細的代碼填充填充的指令,但因爲我是新的,它很難理解它的每一個部分,而不是複製,我想嘗試做我自己的簡單(小規模)洪水填充。將鼠標輸入的填充路徑用作填充路徑之間的填充?
是否可以使用填充路徑作爲填充?我會繪製路徑並使用鼠標在屏幕上確定我的x,y,並讓圖形路徑找出它是否具有邊框(從繪製的路徑指向的點),如果是,請用這些顏色填充這些路徑?
這是什麼想法,但顯然它不工作,所以我會如何去做這個工作?
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
Graphics g;
readonly Pen pen = new Pen(Color.Navy, 2);
Point oldCoords;
GraphicsPath graphicsPaths = new GraphicsPath();
bool spaceFound = false;
public Form1()
{
InitializeComponent();
g = panel1.CreateGraphics();
}
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
Point mousePt = new Point(e.X, e.Y);
if (e.Button == MouseButtons.Right &&
graphicsPaths.IsVisible(mousePt))
{
spaceFound = true;
}
}
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
if (oldCoords.IsEmpty)
graphicsPaths.StartFigure();
else
{
graphicsPaths.AddLine(oldCoords, new Point(e.X, e.Y));
g.DrawPath(pen, graphicsPaths);
}
oldCoords = new Point(e.X, e.Y);
}
else
oldCoords = Point.Empty;
}
private void panel1_MouseUp(object sender, MouseEventArgs e)
{
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
g.DrawPath(pen, graphicsPaths);
if(spaceFound == true)
{
g.FillPath(Brushes.AliceBlue, graphicsPaths);
}
}
}
}
哇這很酷,你似乎知道很多,謝謝。我會試圖找出列表中存儲的路徑,所以我可以有不同顏色填充的多個形狀。你昨天展示了我的一個很好的例子,看看我是否將它結合在這裏。 –
請注意,它會填補你的路徑,但不是真正的填充方式,即它將始終填充整個路徑,而不僅僅是你點擊的最內層的段。對於真正的填充,需要更多涉及的代碼實際上遍及從點擊位置開始的所有相鄰像素。 – TaW
所以我不能夠將填充存儲在列表中並將列表存儲在新列表中並清除第一個列表等等?能夠填補新的形狀? –