2011-01-24 9 views
1
// handle alt+enter ourselves 
     form.KeyDown += (o, e) => 
     { 
      if (e.Alt && e.KeyCode == Keys.Enter) { 
       bool Full; 

       Output ThisOut; 
       swapChain.GetFullScreenState(out Full, out ThisOut); 

       if (Full == true) 
       { 

        swapChain.SetFullScreenState(false, ThisOut); 

       } 
       else if (Full == false) 
       { 

        swapChain.SetFullScreenState(true, ThisOut); 

       } 
      } 
      //  swapChain.IsFullScreen = !swapChain.IsFullScreen; 

창 모드로 문제를 전환 SlimDx 전체 화면 - http://slimdx.org/tutorials/devicecreation.php 및 swapchain의 IsFullScreen 속성이 아니었다 것으로 나타났습니다. 따라서 다른 방법을 사용할려고했는데 문제가 생겼습니다. - 전체 화면으로 전환하면 정상적으로 작동합니다. 그러나 전체 화면이 아닌 화면으로 돌아 가면 볼 수있는 것은 움직이지 않는 빈 상자입니다.내가 SlimDx에 자습서를 사용했다

현재 무슨 일입니까? 튜토리얼에서와 같이 isFullScreen 속성이없는 이유는 무엇입니까? 기기가 어딘가에서 사라지고 있습니까?

+0

나는 이해할 수 없을 것 같다. GetFullScreenState, SetFullScreenState를 사용하여 위에 주어진 메소드가 작동하지 않는 이유는 무엇입니까? 이러한 방법에 대한 설명서를 기반으로 작업해야하는 것처럼 보입니다. –

답변

2

나는이 slimDX 세계에 새로운 기능이며 (stackoverflow에 게시하는) 같은 문제를 기반으로 질문에 걸쳐 실행되었습니다. 내가있어 여기에 C#을 프로그래머가 아니지만,

Private Sub Form_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown 
    If e.Alt And e.KeyCode = Keys.Enter Then 
     Dim isFull As Boolean 
     swapChain.GetFullScreenState(isFull, Nothing) 
     swapChain.SetFullScreenState(Not isFull, Nothing) 
     swapChain.ResizeTarget(swapChainDescription.ModeDescription) 
    End If 
End Sub 

: 원본 창 모드 설명을해야합니다주의, 나는이 VB 알고 당신은 C#을 사용하고 있지만 나는이 성공을 했어 받아들이십시오 :

form.KeyDown += (o, e) => 
    { 
     bool Full; 
     swapChain.GetFullScreenState(out Full, Null); 
     swapChain.SetFullScreenState(!Full, Null); 
     swapChain.ResizeTarget(swapChainDescription.ModeDescription); 
    } 

내가 잘못했거나 도움을 주길 바래서 누군가가 와서 정정하기를 바랍니다.

기본적으로, 내가 이것을 정확하게 이해한다면, 이미 해왔 던 모드에 대한 설명을 찾지 못합니다. YouUten, ThisOut 및 전달 된 ThisOut 및 ThisOut에는 SetFullScreenState 메서드의 특성을 기반으로 전체 화면 플래그가 포함되어 있습니다.

http://msdn.microsoft.com/en-us/library/bb174579%28v=vs.85%29.aspx

이 더 많은 것을 발견 기사 내부 링크를 따라 : 그것은 SlimDX를이지만, 모든 정말로 MS DX, 그래서 여기에 참조입니다.

전체 화면으로 이동하지 않을 경우 Null을 전달해야합니다. Null 이외의 다른 것을 통과했습니다 ... 기존 렌더 타겟이 정확합니다. 기존 렌더 타겟이 이제 전체 화면으로 설정되었습니다. VB에서이기 때문에 Null을 전달하면 함수가 정상적으로 작동하기 때문에 정상적으로 작동합니다. 원래의, 창으로 된 설명을 취하고, 전체 화면이 아닌 창으로 표시된 모드를 다시 통과시킴으로써 모든 것이 제대로 작동합니다.

0

튜토리얼 링크에서 언급했듯이, 우리는이 이유 때문에 라이브러리에 IsFullScreen 속성을 추가했지만 현재 저장소에만 있습니다 (아직 공식 릴리스가 없습니다).

우리는 우리 릴리스를 DirectX 릴리스 일정에 맞추기 때문에 다음 릴리스를 얻는 데 오래 걸릴 것이라고 상상하지 못했습니다. 그들은 분기 당 한 번 수행하는 데 사용하지만, 우리는 그래서 여기에 2010 년

0

년 6 월 이후 출시 보지 못했지만 내가 무슨 짓을했는지 : 그것은 나를 위해 작동하고보다 약간 청소기

if (e.Alt && e.KeyCode == Keys.Enter) 
    { 
     bool isFull = swapChain.Description.IsWindowed; 
     swapChain.SetFullScreenState(isFull, null); 
    } 

다른 방법으로, 당신은 1 줄을 자르고 심지어 .IsWindowed 줄을 SetFullScreenState에 넣을 수 있습니다.