窗口实例-如何在其他类中获取我的主窗口画布
本文关键字:窗口 获取 我的 其他 实例 | 更新日期: 2023-09-27 18:22:14
我有一个类,它为我创建形状(我试图创建某种"类工厂",但我不确定这是否是我创建的正确术语。
问题在我的代码的注释中进行了描述。
public static Ellipse SomeCircle()
{
Ellipse e = new Ellipse();
double size = 10;
e.Height = size;
e.Width = size;
e.Fill = new SolidColorBrush(Colors.Orange);
e.Fill.Opacity = 0.8;
e.Stroke = new SolidColorBrush(Colors.Black);
// i want to have something like this here:
// canvas1.Children.Add(e);
// but I cant access non-static canvas1 from here
// I need this to place my ellipse in desired place
// (line below will not work if my Ellipse is not placed on canvas
// e.Margin = new Thickness(p.X - e.Width * 2, p.Y - e.Height * 2, 0, 0);
return e;
}
我不知道如何解决这个问题。
我不想在我的整个应用程序中按参数传递画布。。。
由于您不想将Canvas作为参数传递,因此可以尝试创建一个作用于Canvas对象的扩展方法。
namespace CustomExtensions
{
public static class Shapes
{
public static Ellipse SomeCircle(this Canvas dest)
{
Ellipse e = new Ellipse();
double size = 10;
e.Height = size;
e.Width = size;
e.Fill = new SolidColorBrush(Colors.Orange);
e.Fill.Opacity = 0.8;
e.Stroke = new SolidColorBrush(Colors.Black);
dest.Children.Add(e);
return e;
}
}
}
用法记得将CustomExtensions命名空间添加到using中。
canvas1.SomeCircle();