gpt4 book ai didi

c# - 画一个椭圆然后移动到另一个位置

转载 作者:行者123 更新时间:2023-11-30 20:58:26 25 4
gpt4 key购买 nike

我使用 EllipsePoints 数组绘制了一个椭圆,该数组定义了椭圆的高度宽度和颜色。

然后使用 for 循环获取椭圆的位置,使用椭圆点和随机数来设置其位置:

Random rand = new Random();     

Int32 randomNumber = rand.Next(0, 310);
Int32 randomNumber2 = rand.Next(0, 500);

for (int j = 0; j < 60; j++)
{
ellipsePoints[j] = new Ellipse() { Width = 20, Height = 20, Fill = Brushes.Red };

canvas1.Children.Add(ellipsePoints[j]);
}

for (int i = 0; i < 60; i++)
{
Canvas.SetLeft(ellipsePoints[i], randomNumber2);
Canvas.SetTop(ellipsePoints[i], randomNumber);
}

我该怎么做才能让椭圆在一定时间后消失,然后出现在另一个随机位置?

最佳答案

这个问题有两个重要方面。

  • Timer - 在 WPF 中,我们使用 System.Windows.Threading.DispatcherTimer
  • 删除元素 - 一种方法是在将 UI 元素添加到 Canvas 之前维护它的副本。我已将它保存在一个类变量中,以便稍后可以使用以下方法将其从 Canvas 中删除

    PaintCanvas.Children.Remove(椭圆);

创建 WPF 并添加一个名为 PaintCanvas 的 Canvas

<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="889" Width="1080">
<Canvas Name="PaintCanvas">
<Button Canvas.Left="46" Canvas.Top="274" Content="Button" Height="23" Name="button1" Width="75" Click="button1_Click" />
</Canvas >
</Window>

守则。我已经记录下来了。

public partial class MainWindow : Window
{
int loopCounter;
private System.Windows.Threading.DispatcherTimer timer;
Random rand = new Random();
Ellipse ellipse = null;

public MainWindow()
{
InitializeComponent();

//Initialize the timer class
timer = new System.Windows.Threading.DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(1); //Set the interval period here.
timer.Tick += timer1_Tick;
}

private void button1_Click(object sender, RoutedEventArgs e)
{
loopCounter = 10;
timer.Start();
}

private void timer1_Tick(object sender, EventArgs e)
{
//Remove the previous ellipse from the paint canvas.
PaintCanvas.Children.Remove(ellipse);

if (--loopCounter == 0)
timer.Stop();

//Add the ellipse to the canvas
ellipse=CreateAnEllipse(20,20 );
PaintCanvas.Children.Add(ellipse);

Canvas.SetLeft(ellipse, rand.Next(0, 310));
Canvas.SetTop(ellipse, rand.Next(0, 500));
}

// Customize your ellipse in this method
public Ellipse CreateAnEllipse(int height,int width)
{
SolidColorBrush fillBrush = new SolidColorBrush() { Color = Colors.Red };
SolidColorBrush borderBrush = new SolidColorBrush() { Color = Colors.Black };

return new Ellipse()
{
Height = height,
Width = width,
StrokeThickness = 1,
Stroke = borderBrush,
Fill = fillBrush
};
}
}

关于c# - 画一个椭圆然后移动到另一个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16121748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com