我正在編寫一個應用程序,以便用戶可以直接在桌面上繪製註釋(圓形,直線,矩形等)。C#:直接在桌面上繪畫時避免桌面屏幕刷新
我使用從User32.dll中的GetDC,成功繪製桌面上的一個矩形:
namespace Annotation
{
public partial class BaseForm : Form
{
[DllImport("User32.dll")]
static extern IntPtr GetDC(IntPtr hwnd);
[DllImport("User32.dll")]
static extern void ReleaseDC(IntPtr dc);
public BaseForm()
{
InitializeComponent();
BackColor = Color.Lime;
TransparencyKey = Color.Lime;
}
private void button1_Click(object sender, EventArgs e)
{
IntPtr desktop = GetDC(IntPtr.Zero);
using (Graphics g = Graphics.FromHdc(desktop))
{
g.FillRectangle(Brushes.Red, 0, 0, 100, 100);
}
}
}
}
當我按一下按鈕,一個矩形將在桌面上繪製。但是當我將鼠標移過矩形時,桌面將被重新繪製,我的矩形將消失。
有沒有一種方法可以使矩形永遠留在那裏(直到我清除圖形)?
謝謝。
是的,請改爲創建一個窗口。 – GSerg
我沒有一個方便的示例,但是您可以創建一個覆蓋整個桌面並在其上繪製的透明窗口。 –
FWIW,您當前的程序不會調用'ReleaseDC'。這是一個很大的漏洞。 –