我尝试使用C#在桌面上绘制一个矩形。找到一些解决方案后我得到了这些:
using System;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace Test
{
public partial class Form1 : Form
{
[DllImport("User32.dll")]
public static extern IntPtr GetDC(IntPtr hwnd);
[DllImport("User32.dll")]
static extern int ReleaseDC(IntPtr hwnd, IntPtr dc);
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
myFunc();
}
public void myFunc()
{
IntPtr desktop = GetDC(IntPtr.Zero);
using (Graphics g = Graphics.FromHdc(desktop))
{
g.FillRectangle(Brushes.Red, 0, 0, 100, 100);
}
ReleaseDC(IntPtr.Zero, desktop);
}
}
}
但是当我跑步时,我的屏幕上什么都没有。任何人都可以帮我找出哪个部分出了问题?非常感谢!
答案 0 :(得分:0)
您不需要DLL导入。使用表单paint事件并获取如下图形对象:
private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawRectangle(new Pen(Color.Black,3),x,y,width,height);
}
答案 1 :(得分:0)
可能Windows会刷新你的屏幕,这就是你没有在屏幕上看到矩形的原因。
以下建议可能不是一个完美的解决方案,但它可以帮助您使代码工作。
在@vivek verma建议的情况下为您的表单添加一个绘制处理程序,并将您的代码移到此绘制处理程序中
{{1}}
这将使您的表单重新绘制时在屏幕上重绘矩形。但是请记住,当屏幕被Windows刷新时,屏幕上的绘图将会消失。
编辑: 这里还有一篇很好的帖子draw on screen without form,它提出了使用无边框形式的替代解决方案。