Exemplo n.º 1
0
        // Функция для настройки полей формы и прочего. Принимает Bitmap только из-за проблематичного класса камеры - нельзя просто взять и узнать параметры камеры
        // Поэтому сначала один раз вызывается через event эта фунция, считываем параметры камеры, а потом отписываемся и подписываем сам обработчик изображений
        private void PrepareForWork(Bitmap img)
        {
            doWork = true;



            // доступные форматы изображений
            ImageFormats = camAdapter.GetAvailableImageFormats();
            foreach (var Val in ImageFormats)
            {
                if (Combo_ImageFormats.InvokeRequired)
                {
                    Combo_ImageFormats.Invoke(new Action(() => Combo_ImageFormats.Items.Add(Val)));
                }
            }

            //доступные форматы пикселей
            PixelFormats = camAdapter.GetAvailablePixelFormats();
            foreach (var Val in PixelFormats)
            {
                if (Combo_PixelFormats.InvokeRequired)
                {
                    Combo_PixelFormats.Invoke(new Action(() => Combo_PixelFormats.Items.Add(Val)));
                }
            }

            //выбираем дефолтные
            if (Combo_ImageFormats.InvokeRequired)
            {
                Combo_ImageFormats.Invoke(new Action(() => Combo_ImageFormats.SelectedIndex = Combo_ImageFormats.Items.IndexOf(camAdapter.GetCurrentImageFormat())));
            }
            if (Combo_PixelFormats.InvokeRequired)
            {
                Combo_PixelFormats.Invoke(new Action(() => Combo_PixelFormats.SelectedIndex = Combo_PixelFormats.Items.IndexOf(camAdapter.GetCurrentPixelFormat())));
            }

            //экспозиция и gain
            exposure_value = camAdapter.GetExposure();
            gain_value     = camAdapter.GetGain();

            if (TB_Exposition.InvokeRequired)
            {
                TB_Exposition.Invoke(new Action(() => TB_Exposition.Text = exposure_value.ToString()));
            }
            if (TB_Gain.InvokeRequired)
            {
                TB_Gain.Invoke(new Action(() => TB_Gain.Text = gain_value.ToString()));
            }

            //--------------
            timer = new Stopwatch();                   // таймер запустится позже в RecieveImage

            camAdapter.OnImageReady -= PrepareForWork; //отписываемся от текущего задания

            DateTime dt = DateTime.UtcNow;

            StartSaving(Path, dt);                   // запускаем асинхронное сохранение

            camAdapter.OnImageReady += RecieveImage; // и подписываемся на основное
        }
Exemplo n.º 2
0
        private void Combo_ImageFormats_SelectedIndexChanged(object sender, EventArgs e)
        {
            camAdapter.SetImageFormat(Combo_ImageFormats.SelectedItem.ToString());

            PixelFormats = camAdapter.GetAvailablePixelFormats();

            Combo_PixelFormats.Items.Clear();
            foreach (var Val in PixelFormats)
            {
                if (Combo_PixelFormats.InvokeRequired)
                {
                    Combo_PixelFormats.Invoke(new Action(() => Combo_PixelFormats.Items.Add(Val)));
                }
                else
                {
                    Combo_PixelFormats.Items.Add(Val);
                }
            }
            if (Combo_PixelFormats.InvokeRequired)
            {
                Combo_PixelFormats.Invoke(new Action(() => Combo_PixelFormats.SelectedIndex = Combo_PixelFormats.Items.IndexOf(camAdapter.GetCurrentPixelFormat())));
            }
            else
            {
                camAdapter.SetPixelFormat(Combo_PixelFormats.Items[0].ToString());
            }
            //string d = Combo_PixelFormats.Items[0].ToString();
        }