I 내가 화상을 묘화하고있는 특정 패널을위한 방법 on_Paint이 형태 1에서 형태 1. 상속되어 두 가지 형태의 형태 1 형 및 2무시 페인트 방법 C 번호
양식이있다. 양식 2는 양식 1을 상속하므로 양식을 디자인 할 때도 패널이 페인트 된 것으로 표시됩니다.
문제는 이제 이미지가 양식 2에 그려진 후에이 이미지 위에 몇 가지 그림을 그릴 필요가 있다는 것입니다. 어떻게하면 가능합니까?
이것은 더 명확한 문제를 만들기위한 코드입니다.
//이 양식 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);
}
이 방법은 양식 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]);
}
}
}
}
나는 메소드 CHEC를 호출하고
나는 그것이 grid_Paint 후 페인트 등이 방법을 호출 할 수 있습니다Tournament tournament = new Tournament();
tournament.LoadGame();
tournament.Show();
tournament.checkWhichToPaint();
가 호출 : 양식 2의 새로운 인스턴스를 생성하고이를 표시 한 후 kWhichToPaint()? 당신의 도움에 대한
감사합니다 :)
파생 된 폼에서 그리드의 Paint 이벤트를 다시 구독하십시오. 그것은 (보통) 올바른 순서로 실행됩니다. ** 절대 ** CreateGraphics를 사용하려면 Paint 이벤트 핸들러에서 가져온 e.Graphics 객체를 사용하십시오. –
그래서 Form 2에 다른 페인트 이벤트를 만드시겠습니까? 왜, CreateGraphics를 사용하여 무엇이 잘못 되었습니까? – Bernice
당신이 필요로하는 것이 이미 사용 가능할 때 여분의 그래픽 객체를 만드는 것이 이상적이지 않은가? :) – Harsha