簡體   English   中英

如何繪制按鈕移動的軌跡?

[英]How do i draw the trail of a button movement?

我正在嘗試制作一個應用程序,該應用程序通過trackbar控制 3 個不同按鈕的移動。

按鈕以圓形方式移向中心點。 我打算做的是繪制按鈕運動的軌跡:每次按鈕更改其位置顏色時,該像素“落在”上。

我正在用 C# 編碼,這是一個 WFA 項目。

這是按鈕移動的代碼:

private void trackBar1_Scroll(object sender, EventArgs e)
    {
        //161, 114
        double sinX, cosX, sinY, cosY, sinZ, cosZ;
        sinX = Math.Sin(trackBar1.Value / 57.29);
        cosX = Math.Cos(trackBar1.Value / 57.29);
        sinX = Math.Truncate((360 - trackBar1.Value)/4 * sinX);
        cosX = Math.Truncate((360 - trackBar1.Value) / 4 * cosX);
        button1.Location = new System.Drawing.Point(161 + (int)sinX, 114 + (int)cosX);

        sinY = Math.Sin((trackBar1.Value + 120) / 57.29);
        cosY = Math.Cos((trackBar1.Value + 120)/ 57.29);
        sinY = Math.Truncate((360 - trackBar1.Value) / 4 * sinY);
        cosY = Math.Truncate((360 - trackBar1.Value) / 4 * cosY);
        button2.Location = new System.Drawing.Point(161 + (int)sinY, 114 + (int)cosY);

        sinZ = Math.Sin((trackBar1.Value + 240) / 57.29);
        cosZ = Math.Cos((trackBar1.Value + 240) / 57.29);
        sinZ = Math.Truncate((360 - trackBar1.Value) / 4 * sinZ);
        cosZ = Math.Truncate((360 - trackBar1.Value) / 4 * cosZ);
        button3.Location = new System.Drawing.Point(161 + (int)sinZ, 114 + (int)cosZ);

    } 

像這樣朝中心點移動

在您的表單中生成一個可以保存所有點的文件 List track = new List();

將按鈕在列表中的第一個位置保存在構造函數中:

public MyForm()
{
    InitializeComponent();
    // Make sure you put this code after the InitializeComponent:
    this.track.Add(button3.Location)
}

然后在移動事件中將按鈕的位置存儲在該列表中:

private void trackBar1_Scroll(object sender, EventArgs e)
{
    //rest of your code
    button3.Location = new System.Drawing.Point(161 + (int)sinZ, 114 + (int)cosZ);
    this.track.Add(button3.Location)
} 

然后處理 Form.Paint 方法如下:

private void MyForm_Paint(object sender, PaintEventArgs e)
{
    Pen pen = new Pen(Color.Red);
    foreach(Point point in track)
    {
        Rectangle rect = new Rectangle(point, new Size(1,1));
        e.Graphics.DrawRectangle(pen, rect);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM