2011-06-14 5 views
0

이 코드를 사용하여 바탕 화면을 색상으로 채 웁니다.투명 색상으로 바탕 화면을 채우는 방법은 무엇입니까?

IntPtr desktop = GetDC(IntPtr.Zero); 
Graphics g = Graphics.FromHdc(desktop); 
g.FillRectangle(new SolidBrush(Color.FromArgb(60, 255, 0, 0), Screen.PrimaryScreen.Bounds);  
ReleaseDC(IntPtr.Zero, desktop); 

이 작동하지만 매우 느립니다. 바탕 화면을 불투명 색상 인 Color.FromArgb (255, 255, 0, 0)로 채우면 매우 빠르게 작동합니다. 투명 색 그리기의 속도를 어떻게 높일 수 있습니까?

+0

루프를 실행 중입니까? 시스템이 다시 그 위에 끌리는 것을 막는 요인은 무엇입니까? –

+1

투명 색상? 그래서 모니터의 내부를 볼 수 있습니까? :) – vines

답변

2

GDI + (System.Drawing에서 사용되는 GDI +)는 모두 소프트웨어로 구현되며 속도는 알려져 있지 않습니다.

다른 방법으로 문제를 푸는 것이 더 나을 것입니다. BorderStyle = None을 사용하여 양식을 만들고 전체 화면을 채우도록 크기를 조정하고 BackColor를 빨강으로, 불투명도를 0.25로 설정합니다 (알파를 60으로 근사하는 것).

+0

나는 이것에 동의한다. 루프에서 직접 그리거나 브러쉬로 채우는 것보다 훨씬 빠릅니다. –

+0

감사합니다. 제 응용 프로그램에서 올바르게 작동합니다. – name1ess0ne

1

GDI +를 사용하면 투명도와 관련된 모든 작업을 수행하는 데 항상 시간이 걸릴 수 있습니다. 이것은 투명도가 픽셀 색상을 혼합하는 많은 곱셈과 나눗셈을 필요로하기 때문입니다. 불투명 한 색상 그리기는 단순히 오래된 픽셀을 덮어 쓰는 문제 일뿐입니다. 더 많은 프로세서를 사용합니다.

조 화이트의 방법이 좋은 대안입니다. 배경색이 낮고 불투명도가 낮은 최대화 된 양식을 사용하면 작업 속도가 훨씬 빨라집니다. 양식을 사용하는 것이 걱정 다른 몇 가지와 함께 제공하지만 명심 : 양식은 바탕 화면 아이콘

  • 형태는, 사용자가 최소화 붉은 색조를 제거 할 수에 클릭을 차단합니다

    • - 비록 작업 표시 줄에 있지 않더라도, windows key + D는 그것을 최소화 할 것입니다 (물론 양식을 다시 표시하는 코드를 작성하는 것만으로도)
    • 양식이 다른 양식의 맨 위에 오게 될 수 있습니다. 그들에게 빨간 색조 ( 의 양식을 설정하면이 문제를 해결할 수있는 다른 모든 양식보다 작음)

    느리지 만 데스크탑에 직접 페인팅하는 대신 양식을 사용할 때 걱정할 다른 사항이 있습니다.

    • 당신은 바탕 화면 배경 무늬가 붉은 색조 수 : -

      이 정말 바탕 화면의 붉은 색조 할 이유에 따라 달라집니다 당신이 달성하려고하는지에 따라,보다 쉽게 ​​방법을 다른이있을 수 있습니다 아이콘에 영향을주지는 않지만 성능에 문제가 없습니다.

    • 데스크톱 상호 작용에 신경 쓰지 않는다면 스크린 샷을 찍을 수 있습니다. 빨간색으로 착 색한 다음 최대화 된 형태로 표시하십시오. 당신은 당신이 어떤 사람들은 다중 모니터 설정을 잊지 마세요, 자주 또한

    에 다시 그리기해야합니다 생각하지 않는 경우

  • 현재 방법은 잘 될 것입니다. 모두 커버하려는 경우 모니터 당 하나의 양식을 만들어야합니다.

  • +0

    모니터 당 하나의 양식이있을 필요는 없습니다.최대화 대신 수동으로 크기를 조정하면 모든 모니터를 포함하는 너비와 높이를 지정할 수 있습니다. –

    +0

    @Joe White : 지적 해 주셔서 고맙습니다. 수동으로 크기를 조정하여 화면 해상도보다 크게 만들 수 있다는 사실을 잊어 버렸습니다. –

    +0

    답변 해 주셔서 감사합니다. 나는 간단한 screenshotter를 만들고 싶다. 그리고 나는 위로 투명한 창을 사용하기로 결정한다. – name1ess0ne

    관련 문제