2014-06-09 2 views
1

Windows에서 깜박임을 멈추는 방법은 무엇입니까? 내가Windows 화면에서 깜박임을 멈추는 방법은 무엇입니까?

protected override CreateParams CreateParams 
{ 
    get 
    { 
     CreateParams cp = base.CreateParams; 
     cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED 
     Thread.Sleep(100); 
     return cp; 
    } 
} 

깜빡하지만 내 CPU 사용량의 사용을 중지하는 데 도움이 될 것입니다 코드 아래에 사용한

100 %로 이동합니다.

도와주세요. 미리 감사드립니다.

+1

windows가 형성되면 .. winforms를 의미합니까? 깜박임은 언제 발생합니까? 어떤 통제가 귀하의 양식에 있습니까? 탭이 이미 나쁜 위치에 있으면 제어합니다. 유일한 실제 해결책은 wpf로 변환하는 것입니다. – Sayse

+0

폼의 Onpaint 이벤트를 사용하고 컨트롤이 책임이 있는지 확인하십시오. u는 폼의 DoubleBuffer를 true로 설정할 수 있습니다. –

답변

1

양식을 깜박이게하는 코드를 게시 한 경우 도움이됩니다.
이게 내가 생각할 수있는 가장 일반적인 해결책이다. (모니터 끄기 : 0 제외) :

this SO thread에 나와있는 답변을 사용해보십시오.

는 다음 클래스 만들기 :

은 기본적으로 당신이 할 필요가 양식에

class DrawingControl 
{ 
    [DllImport("user32.dll")] 
    public static extern int SendMessage(IntPtr hWnd, Int32 wMsg, bool wParam, Int32 lParam); 

    private const int WM_SETREDRAW = 11; 

    public static void SuspendDrawing(Control parent) 
    { 
     SendMessage(parent.Handle, WM_SETREDRAW, false, 0); 
    } 

    public static void ResumeDrawing(Control parent) 
    { 
     SendMessage(parent.Handle, WM_SETREDRAW, true, 0); 
     parent.Refresh(); 
    } 
} 

SuspendDrawing에 깜빡하기 전에 호출을 추가 한 후 그것을에 ResumeDrawing
뭔가 같은 :

public void MyFlickeringFunction() 
{ 
    try 
    { 
     SuspendDrawing(this); 
     /*Your code goes here...*/ 
    } 
    finally 
    { 
      ResumeDrawing(this) 
    } 
} 
2

대부분의 경우 양식의만 설정하면됩니다. 10 속성을 True으로 설정하면 깜박임 및 관련 그리기 문제가 해결됩니다. 특별한 코드가 필요 없습니다.

시도해 보셨습니까?

enter image description here

관련 문제