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 - это API с сохраненным режимом, в отличие от Windows Forms, поэтому вы не можете его рисовать (на самом деле вы можете использовать HWND interop или DrawingVisual). Но это не должно вас беспокоить, поскольку вам не нужно рисовать его самостоятельно, просто объявляйте необходимые прямоугольники и любые другие вещи, используя XAML.

+0

Хотя я принимаю вашу общую точку зрения, ваш ответ не является строгим. Графика * может * по-прежнему рисоваться таким образом, используя класс DrawingContext. См. Раздел «Рисование содержимого в разделе« Визуальный слой »в разделе [Обзор рендеринга WPF-графики] (http://msdn.microsoft.com/en-us/library/ms748373 (v = vs.110) .aspx) на MSDN , Конечно, код * точного * пользователя не может использоваться в WPF. – Sheridan

+0

@Sheridan Я знаю, я упомянул «DrawingVisual», метод которого «RenderOpen()» возвращает «DrawingContext». Во всяком случае, это не GDI. –

1

Вы можете создать полноэкранное приложение WPF с прозрачным Window. Вы можете узнать, как это сделать с страницы Creating Border-less Windows in WPF в блоге Пола Шеррифа. Короче говоря, хотя, чтобы получить окно без границы, вам необходимо установить следующие атрибуты на вашем Window:

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

Тогда вы просто сделайте рисунок в приложении WPF, но он будет выглядит как рисунок находится на рабочем столе.

+0

Хорошо, мне нужно, чтобы рабочий стол работал нормально. Таким образом, это работает? –

+0

Да, это никоим образом не влияет на Рабочий стол, но выглядит так, как будто это так. – Sheridan

Смежные вопросы