从WPF应用程序在桌面上绘制

时间:2014-12-22 11:49:38

标签: wpf c#-4.0 draw

我会从我的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);
}

}

但我没有控制台应用程序,我不明白如何重新绘制/刷新我的矩形或从此代码更改其颜色。

谢天谢地。

2 个答案:

答案 0 :(得分:1)

您可以创建具有透明Window的全屏WPF应用程序。您可以在Paul Sherrif博客的Creating Border-less Windows in WPF页面上了解如何执行此操作。简而言之,要获得无边框窗口,您需要在Window上设置以下属性:

  

WindowStyle="None"
  •ShowInTaskbar="False"
  •AllowsTransparency="True"
  •Background="Transparent"

然后你只需在WPF应用程序中进行绘制,但它看起来像绘图在桌面上。

答案 1 :(得分:0)

此代码无法以任何方式应用于WPF。 WPF是一种保留模式API,与Windows Forms不同,因此您无法像这样绘制它(实际上您可以使用 HWND interop DrawingVisual)。但它不应该打扰你,因为你不需要自己绘制它,只需使用XAML声明所需的矩形和任何其他东西。