gpt4 book ai didi

c# - 覆盖绘制方法 C#

转载 作者:行者123 更新时间:2023-11-30 21:01:55 27 4
gpt4 key购买 nike

我有两个表格 Form 1 和 Form 2。

Form 2 继承自 Form 1。在 Form 1 中,我有一个用于特定面板的 on_Paint 方法,我正在其中绘制图像。由于 Form 2 是从 Form 1 继承而来的,所以在我运行程序之前(在 Form 2 的设计上),面板显示为已绘制。

问题是,在 Form 2 中绘制图像后,现在我需要在此图像上绘制一些东西。我怎样才能做到这一点?

这是一些使问题更清楚的代码。

//这是 Form 1 的 on_Paint 方法

private void grid_Paint(object sender, PaintEventArgs e)
{
Image img = Image.FromFile(resourcesPath+ "grid.fw.png");

gridGraphics = grid.CreateGraphics();
gridGraphics.DrawImage(img, 0, 0, 650, 550);
}

//这是我希望在绘制网格后调用的方法。它位于表格 1 中:

public void paintSprites(int row, int column, int value)
{
int yLoc = 0;
int xLoc = 0;
Graphics g = grid.CreateGraphics();

switch (row)
{
case 0: yLoc = 435; break;
case 1: yLoc = 355; break;
case 2: yLoc = 275; break;
case 3: yLoc = 195; break;
case 4: yLoc = 115; break;
case 5: yLoc = 35; break;
}

switch (column)
{
case 0: xLoc = 35; break;
case 1: xLoc = 120; break;
case 2: xLoc = 205; break;
case 3: xLoc = 290; break;
case 4: xLoc = 375; break;
case 5: xLoc = 460; break;
case 6: xLoc = 545; break;
}

if (value == 1)
{
g.DrawImage(red, xLoc, yLoc, 65, 65);
}
else g.DrawImage(gold, xLoc, yLoc, 65, 65);
}

这个方法位于Form 2中,调用上面的方法:

public void checkWhichToPaint()
{
for (int i = 0; i < ROWS; i++)
{
for (int j = 0; j < COLUMNS; j++)
{
if (gridMap[i, j] != 0)
{
paintSprites(i, j, gridMap[i, j]);
}
}
}
}

我在创建 Form 2 的新实例并显示它之后调用方法 checkWhichToPaint():

Tournament tournament = new Tournament();
tournament.LoadGame();
tournament.Show();
tournament.checkWhichToPaint();

在调用 grid_Paint 之后我可以在哪里调用这个方法?

感谢您的帮助:)

最佳答案

这是给可能需要它的人的答案!

在表格 1 中:

    protected virtual void grid_Paint(object sender, PaintEventArgs e)
{
Image img = Image.FromFile(resourcesPath+ "grid.fw.png");

gridGraphics = grid.CreateGraphics();
gridGraphics.DrawImage(img, 0, 0, 650, 550);
}

在表格 2 中:

   protected override void grid_Paint(object sender, PaintEventArgs e)
{
checkWhichToPaint();
base.grid_Paint(null, null);
}

尽情享受吧! :)

关于c# - 覆盖绘制方法 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13779597/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com