c# - 如何绘制按钮移动的轨迹?
问题描述
我正在尝试制作一个应用程序,它通过 a 控制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);
}
}
推荐阅读
- javascript - 单击以展开正在使用 jsfiddle,但不适用于 wordpress
- javascript - 我想按删除按钮删除所有选中的列表,但我不知道如何
- python - How to store array of objects in MongoDB from django
- python - Pandas:根据 A 列中的信号后 B 列中的第一次出现创建列
- dataframe - Pyspark crossJoin 与特定条件
- python - 如何创建一个函数来打印列表中的全部元素
- google-maps - 样式 Vue2-Google-maps 自动完成,如 vuetify v-text-field
- vue.js - bootrap-vue 不接受轮播上图像的 url 路径
- swift - 圆形 LinearGradient 上的 ContextMenu 在 SwiftUI 中产生锐利的边缘
- python - 为什么访问 Django QuerySet 变得很慢?