国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

C#筆記9——基于TableLayoutPanel的多分屏、全屏程序

2019-11-08 02:48:41
字體:
供稿:網(wǎng)友

C#筆記9——基于TableLayoutPanel的多分屏、全屏程序

    最近由于工作需要,需要設(shè)置一個(gè)多分屏窗口以便于多分屏播放視頻!思考了一下,大致思路如下:用TableLayoutPanel來劃分多個(gè)區(qū)域,在每個(gè)區(qū)域中都放入一個(gè)PictureBox,用PictureBox來接收攝像機(jī)的數(shù)據(jù)流;     每次選擇不同的分屏?xí)r,根據(jù)數(shù)量n*n來設(shè)置TableLayoutPanel的行列數(shù)量,并向其中添加PictureBox。多分屏效果圖如下:

    對于多分屏,通常需要全屏功能,多分為顯示屏全屏和程序窗體全屏,其對應(yīng)的效果如下:

代碼如下:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.Windows;namespace MultiCamera{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        PRivate void Form1_Load(object sender, EventArgs e)        {            split_screen(1);            //記錄原來屏幕大小和寬高            Point_Old = new System.Drawing.Point(this.Location.X,this.Location.Y);             Width_Old = this.Width;            Height_old = this.Height;        }        private int curScreenNum = 0;        private bool isFullScreen = false;        private int row = 0;        private int col = 0;        private PictureBox[] pb = new PictureBox[25];        private Point Point_Old = new System.Drawing.Point();        private int Width_Old;        private int Height_old;        private void split_screen(int num)        {            tlp_screen.ColumnStyles.Clear();            tlp_screen.RowStyles.Clear(); //清除行列屬性            int i;            for (i = 0; i < curScreenNum; i++)            {                tlp_screen.Controls.Remove(pb[i]);            }            tlp_screen.Refresh();            int Sqrt_num = (int)Math.Sqrt(num);            tlp_screen.ColumnCount = Sqrt_num;            tlp_screen.RowCount = Sqrt_num;            int pb_width = (tlp_screen.Width-6*Sqrt_num) / Sqrt_num; //無法修改picturebox的Margin為0(默認(rèn)為3),所以可設(shè)置空格6*列/行            int pb_height = (tlp_screen.Height-6*Sqrt_num) / Sqrt_num;            for (i = 0; i < num; i++)            {                row = i / Sqrt_num;                col = i % Sqrt_num;                pb[i] = new PictureBox();                pb[i].Tag = i;                pb[i].Click += new System.EventHandler(this.PicClick);                //pb[i].Padding = new Padding(1, 1, 1, 1); //為何不管用?                tlp_screen.Controls.Add(pb[i],col,row);                pb[i].BackColor = Color.FromArgb(50, 20 * (row + col), 40 * row, 10 * col);                pb[i].Location = new System.Drawing.Point(row * pb_width, col * pb_height);                pb[i].Size = new System.Drawing.Size(pb_width,pb_height);                //Console.WriteLine("pb[{0}] w:{1} h:{2} x:{3},y:{4}", i,pb[i].Width, pb[i].Height, pb[i].Location.X, pb[i].Location.Y);            }            curScreenNum = num;        }        private void PicClick(object sender, EventArgs e)        {            PictureBox pic = sender as PictureBox;            pic.BackColor = Color.Blue ;            string PicTag = pic.Tag.ToString();            //MessageBox.Show("I'm PictrueBox["+PicTag+"]");            FullScreen(pic);            switch (PicTag)            {                case "0":                    break;                case "1":                    break;                case "2":                    break;                case "3":                    break;                case "4":                    break;                case "5":                    break;                case "6":                    break;                case "7":                    break;                case "8":                    break;                case "9":                    break;                case "10":                    break;                case "11":                    break;                case "12":                    break;                case "13":                    break;                case "14":                    break;                case "15":                    break;                case "16":                    break;                case "17":                    break;                case "18":                    break;                case "19":                    break;                case "20":                    break;                case "21":                    break;                case "22":                    break;                case "23":                    break;                case "24":                    break;                default:                    break;            }        }        private void FullScreen(PictureBox pic)        {            //窗體內(nèi)部全屏            /*            if (!isFullScreen)            { //Full Screen                isFullScreen = true;                tlp_screen.Controls.Remove(pic);                pic.Parent = this;                pic.BringToFront();                pic.Dock = DockStyle.Fill;                tlp_screen.Hide();            }            else            {//Cancel Full Screen                isFullScreen = false;                tlp_screen.Controls.Add(pic);                pic.Parent = tlp_screen;                pic.Dock = DockStyle.Fill;                tlp_screen.Show();            }            */            /*窗體外全屏*/            Rectangle rect = new Rectangle();            rect = Screen.GetBounds(this);//獲取屏幕大小            if (!isFullScreen)            { //Full Screen                isFullScreen = true;                this.FormBorderStyle = FormBorderStyle.None; //取消窗體邊框                this.Width = rect.Width;                this.Height = rect.Height;                this.Location = new System.Drawing.Point(0, 0);                tlp_screen.Controls.Remove(pic);                pic.Parent = this;                pic.BringToFront();                pic.Dock = DockStyle.Fill;                tlp_screen.Hide();            }            else            {//Cancel Full Screen                isFullScreen = false;                this.FormBorderStyle = FormBorderStyle.Sizable;                this.Location = Point_Old;                this.Height = Height_old;                this.Width = Width_Old;                tlp_screen.Controls.Add(pic);                pic.Parent = tlp_screen;                pic.Dock = DockStyle.Fill;                tlp_screen.Show();            }        }        private void btn_fp_1_Click(object sender, EventArgs e)        {            split_screen(1);        }        private void btn_fp_4_Click(object sender, EventArgs e)        {            split_screen(4);        }        private void btn_fp_9_Click(object sender, EventArgs e)        {            split_screen(9);        }        private void btn_fp_16_Click(object sender, EventArgs e)        {            split_screen(16);        }        private void btn_fp_25_Click(object sender, EventArgs e)        {            split_screen(25);        }    }}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 德昌县| 双城市| 洪泽县| 交口县| 贵州省| 金乡县| 永城市| 永胜县| 揭阳市| 达孜县| 和硕县| 任丘市| 揭东县| 农安县| 穆棱市| 兴城市| 北流市| 梓潼县| 昂仁县| 郑州市| 修武县| 卢龙县| 儋州市| 牙克石市| 社旗县| 临江市| 蒙阴县| 乐至县| 荃湾区| 南汇区| 石首市| 上虞市| 武夷山市| 邵阳县| 新泰市| 吴桥县| 海门市| 寿宁县| 瑞昌市| 苍南县| 遂宁市|