2014-12-22 2 views
0

바탕 화면에 WPF 응용 프로그램에서 사각형을 그립니다. 나는 수색했지만 좋은 해결책과 좋은 모범을 찾지 못했습니다. 화면의 가장자리에 직사각형을 그려서 특정 상황이 발생할 때 색상을 변경합니다.WPF 응용 프로그램에서 바탕 화면에 그리기

어떻게해야합니까?

는이 코드 발견 :

using System; 
using System.Drawing; 
using System.Drawing.Drawing2D; 
using System.Runtime.InteropServices; 

class Program { 

[DllImport("User32.dll")] 
static extern IntPtr GetDC(IntPtr hwnd); 

[DllImport("User32.dll")] 
static extern void ReleaseDC(IntPtr dc); 

static void Main(string[] args) { 
    IntPtr desktop = GetDC(IntPtr.Zero); 
    using (Graphics g = Graphics.FromHdc(desktop)) { 
     g.FillRectangle(Brushes.Red, 0, 0, 100, 100); 
    } 
    ReleaseDC(desktop); 
} 

}

을하지만 난 콘솔 응용 프로그램이 없어 나는/내가 할 수있는 방법을 다시 페인트를 이해 내 사각형을 새로 고치거나 색상을 변경하지 마십시오 이 코드에서.

감사합니다.

답변

0

이 코드는 어떤 방식 으로든 WPF에 적용 할 수 없습니다. WPF는 Windows Forms와는 달리 보유 모드 API이므로 실제로 이렇게 그릴 수는 없습니다 (실제로는 HWND interop 또는 DrawingVisual을 사용할 수 있음). 그러나 XAML을 사용하여 필요한 직사각형과 기타 물건을 선언하기 만하면 자신이 직접 그릴 필요가 없으므로 걱정하지 않아도됩니다.

+0

귀하의 일반적인 견해를 수락하지만 귀하의 답변은 사실에 해당하지 않습니다. Graphics *는 여전히'DrawingContext' 클래스를 사용하여 이런 식으로 그릴 수 있습니다. MSDN의 [WPF Graphics Rendering Overview] (http://msdn.microsoft.com/en-us/library/ms748373(v=vs.110).aspx) 페이지의 Visual Layer * 섹션에서 * Drawing Content 페이지를 참조하십시오. . 물론 사용자의 * exact * 코드는 WPF에서 사용할 수 없습니다. – Sheridan

+0

@Sheridan 필자는'DrawingVisual'에 대해 언급했는데,'RenderOpen()'메소드가'DrawingContext'를 리턴합니다. 어쨌든, 그것은 GDI가 아닙니다. –

1

투명 Window이있는 전체 화면 WPF 응용 프로그램을 만들 수 있습니다. Paul Sherrif의 블로그 Creating Border-less Windows in WPF 페이지에서 그 방법을 확인할 수 있습니다. 한마디로하지만, 경계선 창을 얻으려면, 당신은에 다음과 같은 속성을 설정해야합니다 귀하의 Window :

WindowStyle="None"
ShowInTaskbar="False"
AllowsTransparency="True"
단순히 그런 Background="Transparent"

정보 • WPF 응용 프로그램에서 그림을 그리지 만, 모양은처럼 보입니다. 바탕 화면에 그림이 있습니다.

+0

그래, 데스크톱이 정상적으로 작동 할 필요가있다. 이 방법으로 작동합니까? –

+0

예, 어떤 식 으로든 데스크탑에 영향을주지는 않지만 마치 데스크탑처럼 보입니다. – Sheridan

관련 문제