WPF的启动函数和启动入口

C#-WPF的启动函数和启动入口

 

        之前在自动化设备的上位机控制系统的时候,一直用MFC编程,用了大概4年多,MFC编程上位机工作量大,容易导致系统不稳定,对人员的要求很高,曾经招聘了深圳某大学的硕士研究生,写简单的界面,愣是花了好几个月的时间,最终的结果是项目超时,并导致失败!

        天下武功,唯快不破。如何使上位机开发足够快速?一直是我思考的问题,用过开源的界面库,使界面与界面逻辑分离,比如DuiLib,发现这个也是个坑爹的玩意儿,开发工具很差劲,对人员的要求更高,至少要求他们再去时序开源库的内部实现原理,然后调用它的API接口,在项目的时间上,更不划算。

       后面综合考虑,使用了C#和WPF。由于从MFC转到WPF,对WPF必须尽快的熟悉,并做到能开发现有的工作,于是,匆匆的,又来学习WPF了。

打开WPF,新建一个工程,找呀找,发现没有入口函数,于是就想,我该在哪里找到入口函数呢?


发现,在App.Xaml文件中,他定义了一个入口Window1.xaml;可以进入Window1的构造函数。


 

那么我就尝试着新建一个窗口,并将启动修改为Window2,即StartupUri=Window2.xml’’>。果然,意料之中,可以进入Window2的构造函数。


于是,我可以顺利的随意选择启动时的窗体了。但是,问题来了,我启动的时候,并不想直接进入窗体的构造函数,那我该怎么办?有没有办法进入自己写的Main()函数的入口? WPF自己的入口函数又在哪里呢?考虑到入口是从APP.cs进入的,那我自己在该类里面加入一个Main函数试试


将xaml的入口语句改为 StartupUri=Main’’> ,编译无错误,运行后发现找不到入口


我嘞个去,这样不行啊。于是找呀找,发现在工程设置那里,有个一个启动对象很显眼,App是一个窗体无关的类,于是自己添加一个类Entrance.cs,命名为Program, 再去看看启动对象,果然增加了一个类Program,如下图。

选中Program选项框,在该类里面增加一个函数

namespace TestWPF
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            TestWPF.App app = new TestWPF.App();
            app.InitializeComponent();
            Window1 windows = new Window1();
            app.MainWindow = windows;
            app.Run();
        }
    }
}
xaml的入口语句改依旧是 StartupUri=Main’’> ,编译,运行,成功!!


  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF中,可以使用`Path`元素和`PathGeometry`类来绘制函数图像。以下是一些基本步骤: 1. 创建一个Path元素,并将其添加到Canvas或其他容器中。 2. 创建一个PathGeometry对象,并将其赋值给Path元素的Data属性。 3. 创建一个PathFigure对象,并将其加入到PathGeometry的Figures属性中。 4. 在PathFigure中创建一个PolyLineSegment对象,并将其加入到PathFigure的Segments属性中。 5. 在PolyLineSegment对象中使用一个循环来计算函数在给定范围内的所有点,并将这些点加入到PolyLineSegment的Points属性中。 6. 设置Path元素的Stroke属性来指定线条颜色和宽度。 下面是一个简单的示例代码,用于绘制函数y = sin(x)在0到2π之间的图像: ```csharp Path path = new Path(); path.Stroke = Brushes.Black; path.StrokeThickness = 2; PathGeometry pathGeometry = new PathGeometry(); PathFigure pathFigure = new PathFigure(); pathFigure.StartPoint = new Point(0, 50); PolyLineSegment polyLineSegment = new PolyLineSegment(); for (double x = 0; x <= 2 * Math.PI; x += 0.1) { double y = Math.Sin(x) * 50 + 50; polyLineSegment.Points.Add(new Point(x * 50, y)); } pathFigure.Segments.Add(polyLineSegment); pathGeometry.Figures.Add(pathFigure); path.Data = pathGeometry; canvas.Children.Add(path); ``` 在这个示例中,我们首先创建了一个Path元素,并将其Stroke属性设置为黑色,StrokeThickness属性设置为2。然后,我们创建了一个PathGeometry对象和一个PathFigure对象,并将PathFigure对象的StartPoint设置为(0, 50)。接下来,我们创建了一个PolyLineSegment对象,并使用一个循环来计算函数在给定范围内的所有点,将这些点添加到PolyLineSegment的Points属性中。最后,我们将PolyLineSegment对象添加到PathFigure对象的Segments属性中,将PathFigure对象添加到PathGeometry对象的Figures属性中,将PathGeometry对象赋值给Path元素的Data属性,以便WPF可以将其绘制到屏幕上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值