是否有可能创建只是用C#控制台,而不是一个C#窗体应用程序在屏幕上一个大的白色矩形?
它应该覆盖整个屏幕,如果可能的。 我知道我必须使用System.Drawing中,并试图几个步骤,但没有人会实际上我的屏幕上打印!
是否有可能创建只是用C#控制台,而不是一个C#窗体应用程序在屏幕上一个大的白色矩形?
它应该覆盖整个屏幕,如果可能的。 我知道我必须使用System.Drawing中,并试图几个步骤,但没有人会实际上我的屏幕上打印!
你需要System.Drawing
和System.Runtime.InteropServices
。 您可能需要项目引用添加到它们。
using System.Runtime.InteropServices;
using System.Drawing;
方法添加到用的P / Invoke类
[DllImport("User32.dll")]
public static extern IntPtr GetDC(IntPtr hwnd);
[DllImport("User32.dll")]
public static extern void ReleaseDC(IntPtr hwnd, IntPtr dc);
找一个Graphics
整个屏幕的对象,并绘制一个矩形用它:
IntPtr desktopPtr = GetDC(IntPtr.Zero);
Graphics g = Graphics.FromHdc(desktopPtr);
SolidBrush b = new SolidBrush(Color.White);
g.FillRectangle(b, new Rectangle(0, 0, 1920, 1080));
g.Dispose();
ReleaseDC(IntPtr.Zero, desktopPtr);
用这种方法的问题是,如果屏幕刷新在所有的矩形将被覆盖,使其失去了最实际的应用。
和以前一样,你需要的项目引用。 这个时候要System.Windows.Forms
。 您还需要System.Drawing
再次:
using System.Drawing;
using System.Windows.Forms;
使新的形式,去掉它的边界,它填满整个屏幕,并把它放在任务栏的顶部:
Form f = new Form();
f.BackColor = Color.White;
f.FormBorderStyle = FormBorderStyle.None;
f.Bounds = Screen.PrimaryScreen.Bounds;
f.TopMost = true;
Application.EnableVisualStyles();
Application.Run(f);
有一个可能的问题是,用户也可以用Alt + Tab远离窗户。 如果你想做任何更复杂的图形,你需要写像一些绘图代码此 。 使窗体背景透明,其设置TransparentKey
到相同的作为其Backolor
。
我刚刚测试这两种在.NET 4.5和Windows 7,所以它可能是早期版本的不同。 更多的信息在这里和这里 。
是的,它可以绘制到屏幕上,但它可能会更易于使用最顶层,无国界的形式。
您也可以从一个控制台应用程序做到这一点,如果你一定要,为您提供参考必需的组件,但是这将导致剩余的在屏幕上的应用程序的生命控制台窗口。
this.TopMost = true;
this.FormBorderStyle = FormBorderStyle.None;
另外我相信你可以创建一个实例Window
,并调用Show
这一点。
这回答不同的问题介绍如何使用GDI +调用直接绘制到屏幕上。
我理解这个问题的方式,这是不是真的有可能以任何有意义的方式。 我想你可以调用平台出来的User32.dll和GDI32.DLL和实施一个经典的Windows UI应用程序的方式,与消息循环,等等,但是这将是一个简单得多,只是使用表单。 什么是你不能做的原因是什么?