Пример #1
0
        private void OnSaveBtnClick(object sender, EventArgs e)
        {
            if (this.screenListView.SelectedItems.Count == 0)
            {
                MessageForm msg = new MessageForm();
                msg.setCancelBtn(false);
                msg.setText("请选择一个需要共享的屏幕!");
                msg.ShowDialog();
                return;
            }
            TRTCScreenCaptureSourceInfo sourceinfo = mScreenList.getSourceInfo(0);

            for (uint i = 0; i < mScreenList.getCount(); i++)
            {
                TRTCScreenCaptureSourceInfo info = mScreenList.getSourceInfo(i);
                if (this.screenListView.SelectedItems[0].Text.Equals(mScreenList.getSourceInfo(i).sourceName))
                {
                    sourceinfo = info;
                    break;
                }
            }
            RECT rect = new RECT()
            {
                top    = 0,
                left   = 0,
                right  = 0,
                bottom = 0
            };

            mTRTCCloud.selectScreenCaptureTarget(ref sourceinfo, ref rect, true, true);
            mMainForm.OnSetScreenParamsCallback(true);
            this.Close();
        }
Пример #2
0
        private void OnSaveBtnClick(object sender, EventArgs e)
        {
            for (uint i = 0; i < mScreenList.getCount(); i++)
            {
                TRTCScreenCaptureSourceInfo sourse = mScreenList.getSourceInfo(i);
                if (sourse.sourceName.Equals(this.screenComboBox.Text))
                {
                    mScreenInfo = sourse;
                }
            }
            RECT rect = new RECT()
            {
                top    = int.Parse(string.IsNullOrEmpty(this.topTextBox.Text) ? "0" : this.topTextBox.Text),
                left   = int.Parse(string.IsNullOrEmpty(this.LeftTextBox.Text) ? "0" : this.LeftTextBox.Text),
                right  = int.Parse(string.IsNullOrEmpty(this.rightTextBox.Text) ? "0" : this.rightTextBox.Text),
                bottom = int.Parse(string.IsNullOrEmpty(this.bottomTextBox.Text) ? "0" : this.bottomTextBox.Text)
            };

            mTRTCCloud.selectScreenCaptureTarget(ref mScreenInfo, ref rect, true, true);
            mMainForm.OnSetScreenParamsCallback(true);
            this.Close();
        }
Пример #3
0
        private void OnLoad(object sender, EventArgs e)
        {
            SIZE thumbSize = new SIZE()
            {
                cx = 100, cy = 100
            };
            SIZE iconSize = new SIZE()
            {
                cx = 100, cy = 100
            };

            mScreenList = mTRTCCloud.getScreenCaptureSources(ref thumbSize, ref iconSize);
            Log.I(String.Format("ITRTCScreenCaptureSourceList : count = {0}", mScreenList.getCount()));
            for (uint i = 0; i < mScreenList.getCount(); i++)
            {
                TRTCScreenCaptureSourceInfo sourse = mScreenList.getSourceInfo(i);
                this.screenComboBox.Items.Add(sourse.sourceName);
                Log.I(String.Format("ScreenCaoture{0} : type = {1}, sourseId = {2}, sourseName = {3}, thumbBuffer = {4}, iconBuffer = {5}",
                                    i + 1, sourse.type, sourse.sourceId, sourse.sourceName, sourse.thumbBGRA.buffer + " {" + sourse.thumbBGRA.width + ", " + sourse.thumbBGRA.height + "}",
                                    sourse.iconBGRA.buffer + " {" + sourse.iconBGRA.width + ", " + sourse.iconBGRA.height + "}"));
            }
            this.screenComboBox.SelectedIndex = 0;
        }
Пример #4
0
        private void OnLoad(object sender, EventArgs e)
        {
            SIZE thumbSize = new SIZE()
            {
                cx = 120, cy = 70
            };
            SIZE iconSize = new SIZE()
            {
                cx = 20, cy = 20
            };

            mScreenList = mTRTCCloud.getScreenCaptureSources(ref thumbSize, ref iconSize);
            for (uint i = 0; i < mScreenList.getCount(); i++)
            {
                TRTCScreenCaptureSourceInfo sourse = mScreenList.getSourceInfo(i);
                Log.I(String.Format("ScreenCaoture{0} : type = {1}, sourseId = {2}, sourseName = {3}, thumbBuffer = {4}, iconBuffer = {5}",
                                    i + 1, sourse.type, sourse.sourceId, sourse.sourceName, sourse.thumbBGRA.buffer + " {" + sourse.thumbBGRA.width + ", " + sourse.thumbBGRA.height + "}, length = " + sourse.thumbBGRA.length,
                                    sourse.iconBGRA.buffer + " {" + sourse.iconBGRA.width + ", " + sourse.iconBGRA.height + "}, length = " + sourse.iconBGRA.length));
                string name;
                if (sourse.sourceName.Equals("Screen1"))
                {
                    name = "显示器-1";
                }
                else if (sourse.sourceName.Equals("Screen2"))
                {
                    name = "显示器-2";
                }
                else if (sourse.sourceName.Equals("Screen3"))
                {
                    name = "显示器-3";
                }
                else if (sourse.sourceName.Equals("Screen4"))
                {
                    name = "显示器-4";
                }
                else if (sourse.sourceName.Equals("Screen5"))
                {
                    name = "显示器-5";
                }
                else
                {
                    name = sourse.sourceName;
                }

                // 设置屏幕缩略图

                int    width  = 120;
                int    height = 70;
                Bitmap bmp    = new Bitmap(width, height, PixelFormat.Format32bppRgb);
                if (sourse.thumbBGRA.length <= 0)
                {
                    // 未找到缩略图,不显示
                    using (Graphics g = Graphics.FromImage(bmp))
                    {
                        g.Clear(Color.White);
                    }
                    mImageList.Images.Add(name, bmp);
                    continue;
                }

                BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, PixelFormat.Format32bppRgb);

                int    stride = bmpData.Stride;
                IntPtr iptr = bmpData.Scan0;
                int    scanBytes = stride * height;
                int    posScan = 0, posReal = 0;
                byte[] pixelValues = new byte[scanBytes];

                for (int j = 0; j < sourse.thumbBGRA.buffer.Length; j++)
                {
                    pixelValues[posScan++] = sourse.thumbBGRA.buffer[posReal++];
                }

                Marshal.Copy(pixelValues, 0, iptr, scanBytes);
                bmp.UnlockBits(bmpData);

                mImageList.Images.Add(name, bmp);
            }
            this.screenListView.LargeImageList = mImageList;
            this.screenListView.BeginUpdate();
            for (int i = 0; i < mImageList.Images.Count; i++)
            {
                ListViewItem item = new ListViewItem();
                item.ImageIndex = i;
                item.Text       = mImageList.Images.Keys[i];
                this.screenListView.Items.Add(item);
            }
            this.screenListView.EndUpdate();
            this.screenListView.HideSelection = true;
            if (this.screenListView.Items.Count > 0)
            {
                this.screenListView.Items[0].Selected = true;
                this.screenListView.Select();
            }
        }