-1
我試圖做一個簡單的時鐘,它不工作,因爲罪和cos給wpf沒有負值!C#時鐘不工作原因在wpf沒有負座標
namespace Desenho
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
[DllImport("Kernel32")]
public static extern void AllocConsole();
[DllImport("Kernel32")]
public static extern void FreeConsole();
private Timer timer1;
int i = 0;
public MainWindow()
{
InitializeComponent();
AllocConsole();
Console.Clear();
InitTimer();
}
public void InitTimer()
{
timer1 = new Timer();
timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Tick);
timer1.Interval = 1; // in miliseconds
timer1.Start();
/*for(int a = 0; a>-200; a--)
{
Console.WriteLine("Angulo: {0}; Cos: {1}; Sen: {2}; Rad: {3};", a, Math.Cos(toRad(a)), Math.Sin(toRad(a)), toRad(a));
}*/
}
private void timer1_Tick(object sender, EventArgs e)
{
/*if(i == 5)
{
i = 0;
}
mudaCores(i);
i++;*/
float x = 100+(float)Math.Cos(toRad(i));
float y = 100+(float)Math.Sin(toRad(i));
desenhaLinha(x, y);
i--;
Console.WriteLine("Angulo: {0}; X: {1}; Y: {2};", i, x, y);
}
private async void desenhaLinha(float x, float y)
{
await Task.Run(() =>
{
panel.Dispatcher.BeginInvoke((Action)(() => panel.linhas.Add(new Cordenadas(new Pen(new SolidColorBrush(Colors.Red), 2), new Point(100, 100), new Point(x, y)))));
panel.Dispatcher.BeginInvoke((Action)(() => panel.InvalidateVisual()));
});
}
private async void mudaCores(int i)
{
Color[] cores = new Color[] { Colors.Red, Colors.Black, Colors.Blue, Colors.Green, Colors.Yellow, Colors.Violet };
try
{
await Task.Run(() => { panel.Dispatcher.BeginInvoke((Action)(() => panel.color = cores[i]));
panel.Dispatcher.BeginInvoke((Action)(() => panel.InvalidateVisual()));
});
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
double toRad(double graus)
{
double rad;
rad = graus * Math.PI/180;
return rad;
}
}
}
我的drawLine FUNC只需要一個點作爲參數,因爲它假定中心一個爲100,100。我怎樣才能使這項工作?
嗯,在每個座標上加100,這就是中心? –
做什麼工作?您至少*必須向我們展示您的drawLine方法。除此之外,LineGeometry的Transform屬性中的RotateTransform可能比現在更合適。 – Clemens
試圖添加100,沒有工作:/ –