게임을 조금만 만들고 위에 일시 중지 메뉴를 놓기를 원합니다.투명도가 적용된 그래픽 겹침 내기
타이머가 게임 루프를 담당합니다. 일시 중지되면 일시 중지 메뉴를 그리는 별도의 기능을 호출합니다. 지금은 작은 중심의 사각형을 그립니다. 그러나 투명하게 지우지 만 사각형은 투명하지 않습니다.
내가 할 수있는 방법이 있습니까?
다음은 상태를 업데이트하고이를 기반으로 한 내 게임 루프 코드입니다. 보시다시피 게임이 일시 중지되면 별도의 메소드가 호출됩니다.
private void tmrGameLoop_Tick(object sender, EventArgs e)
{
if (Paused)
{
Pause();
return;
}
using (Graphics gr = CreateGraphics())
{
using (BufferedGraphicsContext bgc = new BufferedGraphicsContext())
{
using (BufferedGraphics bg = bgc.Allocate(gr, DisplayRectangle))
{
bg.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
bg.Graphics.Clear(Color.Transparent);
// draw the stuff
bg.Render();
}
}
}
}
이것은 일시 중지()입니다. 예상대로 위쪽으로 그려지지만 별도의 그래픽 개체이기 때문에 예상대로 투명도가 떨어집니다.
private void Pause()
{
using (Graphics gr = CreateGraphics())
{
using (BufferedGraphicsContext bgc = new BufferedGraphicsContext())
{
using (BufferedGraphics bg = bgc.Allocate(gr, m_menu))
{
bg.Graphics.Clear(Color.Transparent);
// draw pause menu
bg.Render();
}
}
}
}
투명하게하려면 어떤 방법이 있습니까?
코드를보기 있다! – TaW
필자가 실제로 그리는 것의 모든 비트가없는 코드를 추가했습니다. 그 이유는 관련이 없기 때문입니다. 나는 다양한 방법으로 그래픽 객체를 전달하려고했지만 운이 없었습니다. – MattyMatt
그럼, 보낸 사람을 그리는거야? 다른 컨트롤이 없습니까? __never__가 CreateGrpahics를 사용하면 결과가 유효하지 않은 것을 알 수 있습니다. 그러면 그리기 할 그래픽이 비 영구적입니다! – TaW