C# でのこの動作は奇妙です。デスクトップで効果的に「描画」できるようにするために、次のクラスがあります。
class drawOnDesktop {
public static Form dodF = new Form();
public static Graphics formGraphics;
public drawOnDesktop() {
formGraphics = dodF.CreateGraphics();
dodF.BackColor = Color.LightGreen;
dodF.TransparencyKey = Color.LightGreen;
dodF.Size = new Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
dodF.Location = new Point(0,0);
dodF.StartPosition = FormStartPosition.Manual;
//dodF.FormBorderStyle = FormBorderStyle.None;
dodF.WindowState = FormWindowState.Maximized;
dodF.MinimizeBox = false;
dodF.MaximizeBox = false;
dodF.ControlBox = false;
//dodF.TopMost = true; //For development in case something goes wrong
dodF.BringToFront();
dodF.Show();
}
public static void drawCircle(Point location) {
formGraphics.FillEllipse(Brushes.Black, location.X, location.Y, 10, 10);
}
}
そして、メインフォームから次のように呼び出します。
drawOnDesktop dod = new drawOnDesktop();
drawOnDesktop.drawCircle(new Point(100,100));
このコードを実行すると、画面の左上隅に小さな黒い円が表示されます。問題は、フォームの境界線が見えることです。ここで、行をコメントアウトしてみてくださいFormBorderStyle
。黒い点が一瞬表示され、消えます。どうして!?ご覧のとおり、このフォームに多くのプロパティを設定しましたが、それでも機能しません。OSによって再描画されていますか?
マウス イベントなどについて心配する必要はありません。画面上に配置されるドットは、ユーザーによるものではなく、完全にプログラムによるものです。また、 を設定dodF.ShowInTaskbar = false
すると、プログラム全体がクラッシュします。
このコードを修正して、ドットが表示され、私まで残るようにするにはどうすればよいformGraphics.Clear(Color.Black)
ですか?