[项目需求]c# WPF

废话不多说
我是在百度云上面找的百度云视频
控件:control 说白就是按钮哪些框框
属性:相当于控件的外观
事件:就是一些触发的因素
方法:对于事件的回应
如果需要删除一个控件的话,分成2步(以删除button为例)
1、在mianWindow.xaml.cs文件中关于Button部分删除
[项目需求]c# WPF_第1张图片
2、在XAML中吧,吧对应Button中删除
[项目需求]c# WPF_第2张图片
就是图示中我加深的位置。
然后在删除的过程当中,还是有很多问题,到时候读者只能自己看着办了,至少我现在就是这样,然后删来删去,最后编译通过了就可以啦。
sender指的是触发事件的控件
在C#中所有的类都继承与object这个类,也就是说sender是object类型的

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;//引用命名空间

namespace WinTestDemo//定义命名空间
{
    class Program//定义了一个叫program的类
    {
        static void Main(string[] args)//定义了一个叫main的方法,是程序的入口方法
        {
            Console.WriteLine("Hello world!");//让控制台输出一个Hello world!
            Console.ReadKey();//暂停出控制台的画面


        }
    }
}
using System;
using System.Collections.Generic;
using System.Text;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
             string name = "David Han";
            int age = 21;
            int i=(int)3.0//讲一个原本double类型的数字强制转化成int类型并且赋值给i
            Console.WriteLine("My name is" + name + ",and I am " + age + " year olds");
            Console.WriteLine("My name is {0},and I am  {1}  year olds",name,age);//占位符由大括号和数字组成,数字由0开始编号
            int[] age=new int[20];//声明数组 也就是说:数据类型[]数组名=new 数据类型[长度]
            //现在这个语句就是定义了age数组,这个数组有20个元素
            age[0]=1;
            age[1]=2;改每个数组进行赋值
             string[] job =new string []{ "经理",“项目主管”,“技术总监”,“财务主管” };
             //定义一个字符串数组
             for (int i = 0; i <  job.Length; i++)//用for语句遍历这个数组
                {
                Console.WriteLine(job[i]);//打印职位
                }
            int[] num={1,2,3,4};//遍历一个数组
            foreach(int x in num)
            {
            Console.Write(x);
            }
            //foreach(数据类型 迭代变量名称 in 数组名)
            {
            使用迭代变量//迭代变量只能读不能写
            }
            int[,]b={{1,2,3},{2,3,4}};
            const string CITY = "布宜诺斯艾利斯";//常量,城市 定义字符串类型
            const string NAME = "列奥波尔多·福图纳托·加尔铁里·卡斯特利";//常量,姓名
            string hobby;//声明变量保存爱好
            hobby=“剑道”;//给爱好变量赋值
            Console.WriteLine(NAME+"出生在"+CITY +"的一个工人家庭");//使用常量
            Console.WriteLine("我爱好"+hobby);//打印变量
            Console.Readline()//将会接受用户输入的一个字符串
            //将readline来进行
            string name;
            Console.WriteLine("say what:");
            name=Console.ReadLine();
            Console.WriteLine("hi, {0}", name);
            Console.ReadKey();

        }
    }
}

一维数组和二维数组的区别:
[项目需求]c# WPF_第3张图片
int[,] arr = new int[2,3]; //包含2个一维数组,每个一维数组包含3个变量,总共2*3=6个数组元素
arr[1,0] = 28; //二维数组元素有2个索引,都是从0开始,以arr数组为例,元素索引从[0,0]到[1,2]
Console.Write( arr[1,0] );
[项目需求]c# WPF_第4张图片

找debug的快捷键;
设置断点:F9。调试:F5,单步执行:F10
面向对象的三大特征:封装,继承和多态
字段,就是类的状态Field
方法,就是类能够执行的动作
类的继承:类之间可以继承,人这个类可以继承动物这个类的属性,在定义人这个类的时候只用定义特有的对象和方法就可以。然后就清楚父类和子类。基类=超类=父类

using System;
using System.Collections.Generic;
using System.Text;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Person pl=new Person();//对person这个类的一个实例化对象
            pl.Sayhello();
            Console.ReadKey();
        }
    }





        class Person
        {


            public int Height;//定义了三个数据成员,也可以说定义了三个字段
            public int Age;
            public string Name;


            public void Sayhello()
            {
                Console.WriteLine("hello!!!!");
            }



        }


}

一些约定成俗的规定:
public定义的就是属性 private定义的就是字段
属性字段开头大写 字段开头字母小写

构造函数就是一种特殊的函数,这种函数用来 创建对象的特殊函数,函数名和类名是一样的,没有返回值,连void都不用。
构造函数用来创建对象,并且在构造函数对对象进行初始化。构造函数也可以进行重载,只要他们可以初始化对象的时候有不同就可以了。
下面举一个典型的例子:

 class Person
    {
         public string Name;
         public Person(string name)
        {
            this.Name = name;
        }
      }

人类就是一个类,在类中定义人类的属性:身高,方法:吃饭。在main函数中实例化一个对象,实例化的对象的名字叫小明,那么小明就继承了人类的属性,也就是小明拥有了人类:身高这个属性,也拥有了吃饭这个方法。
封装就是隐藏对象的信息,留出访问的接口、
举个小例子:

 class child
    {
        private string _sex;
        public string Sex
        {
            get;//get和set都是访问器 get是用来获取访问字段的值(只读)
            set;//set 是用来写入访问字段的值(修改)
        }

    }

实现封装的快捷键’ctrl+R+E
首先,选中需要实现封装的属性:
这里写图片描述
然后按ctrl+R+E
[项目需求]c# WPF_第5张图片
然后确定[项目需求]c# WPF_第6张图片
然后应用
[项目需求]c# WPF_第7张图片

   /// 
        /// 设置对外访问接口
        /// 

这个小技巧是直接输入三个“/”、
用构造方法对字段进行初始化、
对象的成员包含:字段,属性和方法
使用方法分成两个步骤:1、定义方法,2、调用方法、
构造方法的作用就是初始化的方法进行赋值
关键字:
this表示当前对象,当前对象的sex


WPF篇
sender是触发这个的事件
在vs中Ctrl+E+C是对选中的信息进行注释
Ctrl+E+U是取消对信息的注释,落实在按键上就是
这里写图片描述就是这两个按键
XAML 读作zaimou。本质上就是一个html文件,grid就是一个表格

Kinect深度影像资料是一个点阵图,这个点阵图中每个位置靠近摄影机距离。
玻璃是没有办法正确显示
下面我来一条一条的分析这个里面的语句,然后在这个的基础上进行开发吧

using System;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using Microsoft.Kinect;

namespace MachineVisionKinect_SDK
{
    public partial class MainWindow : Window
    {
        //Instantiate the Kinect runtime. Required to initialize the device.
        //IMPORTANT NOTE: You can pass the device ID here, in case more than one Kinect device is connected.
        KinectSensor sensor = KinectSensor.KinectSensors[0];
        byte[] pixelData;

        public MainWindow()
        {
            InitializeComponent();

            //Runtime initialization is handled when the window is opened. When the window
            //is closed, the runtime MUST be unitialized.
            this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
            this.Unloaded += new RoutedEventHandler(MainWindow_Unloaded);

            //Handle the content obtained from the video camera, once received.
            sensor.ColorStream.Enable();
        }

        void MainWindow_Unloaded(object sender, RoutedEventArgs e)
        {
            sensor.Stop();
        }

        void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            sensor.Start();
            sensor.ColorFrameReady += runtime_VideoFrameReady;
        }

        void runtime_VideoFrameReady(object sender, ColorImageFrameReadyEventArgs e)
        {
            bool receivedData = false;

            using (ColorImageFrame CFrame = e.OpenColorImageFrame())
            {
                if (CFrame == null)
                {
                    // The image processing took too long. More than 2 frames behind.
                }
                else
                {
                    pixelData = new byte[CFrame.PixelDataLength];
                    CFrame.CopyPixelDataTo(pixelData);
                    receivedData = true;
                }
            }

            if (receivedData)
            {
                BitmapSource source = BitmapSource.Create(640, 480, 96, 96,
                        PixelFormats.Bgr32, null, pixelData, 640 * 4);

                videoImage.Source = source;
            }
        }
    }
}

你可能感兴趣的:(【生活二三事】)