0

1 フレームだけ画面に何かを描画する必要があります。
テキスト行など。

ウィンドウを移動してこれを達成しようとしましたが、失敗しました。表示/非表示または所定の位置に移動したり移動したりしても、1 フレーム (8 ~ 16 ミリ秒) だけ表示することはできません。

これを行う方法はありますか?

(うーん、好奇心旺盛な人のために、私はこれを他の誰かのためにやっているので、これを行う必要がある理由を合理化しても意味がありません。)

編集:私が最後に試したこと:

public partial class Form2 : Form
{
    static Random rand = new Random();


    public void ShowString(string s)
    {
        this.label1.Text = s; // Has .AutoSize = true
        this.Size = this.label1.Size;

        var bnds = Screen.PrimaryScreen.WorkingArea;
        bnds.Size -= this.Size;

        this.Location = new Point(rand.Next(bnds.X, bnds.Right), rand.Next(bnds.Y, bnds.Bottom));
    }


    public Form2()
    {
        InitializeComponent();
    }

    private void Form2_Load(object sender, EventArgs e)
    {
        timer1.Enabled = true;
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        if (Location.X != -10000 && Location.Y != -10000)
        {
            Location = new Point(-10000, -10000);

            timer1.Interval = Program.interval; // How long to wait before showing two things.
        }
        else
        {
            timer1.Interval = Program.delay; // For how long to show.

            ShowString("just something to test");
        }
    }
}

そしてその前に:

public partial class Form2 : Form
{
    static Random rand = new Random();


    public void ShowString(string s)
    {
        this.label1.Text = s; // Has .AutoSize = true
        this.Size = this.label1.Size;

        var bnds = Screen.PrimaryScreen.WorkingArea;
        bnds.Size -= this.Size;

        this.Location = new Point(rand.Next(bnds.X, bnds.Right), rand.Next(bnds.Y, bnds.Bottom));
    }


    public Form2()
    {
        InitializeComponent();

        timer1.Interval = Program.interval;
    }

    private void Form2_Load(object sender, EventArgs e)
    {
        timer1.Enabled = true;
    }

    private void Form2_Move(object sender, EventArgs e)
    {
        if (Location.X != -10000 && Location.Y != -10000)
        {
            Thread.Sleep(Program.delay); // Dirty cheat, but I was just trying.
            this.Location = new Point(-10000, -10000);
        }
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        ShowString("just something to test");
    }
}
4

0 に答える 0