Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

diegobill

[Resolvido] Problema para usar a System::Windows::Forms::Timer

Recommended Posts

Estou tentando fazer um programa que exibe em um picturebox os frames capturados por uma webcam, essa biblioteca SAASCapturaNS é que tem as funções de captura, mas o problema do programa está no uso da System::Windows::Forms::Timer, pq ja consigo capturar uma única imagem, mas quando tento capturar uma sequencia usando o timer não dá certo.

 

CÓDIGO:

 

#pragma once

 

 

namespace webcam {

	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;
	using namespace SAASCapturaNS;

	/// <summary>
	/// Summary for Form1
	///
	/// WARNING: If you change the name of this class, you will need to change the
	///		  'Resource File Name' property for the managed resource compiler tool
	///		  associated with all .resx files this class depends on.  Otherwise,
	///		  the designers will not be able to interact properly with localized
	///		  resources associated with this form.
	/// </summary>
	public ref class Form1 : public System::Windows::Forms::Form
	{
		SAASCapturaNS::SAASCaptura^ video;
	
	public:
		Form1(void)
		{
			InitializeComponent();
			//
			//TODO: Add the constructor code here
			//
		}
		
	protected:
		/// <summary>
		/// Clean up any resources being used.
		/// </summary>
		~Form1()
		{
			if (components)
			{
				delete components;
			}
		}
	private: System::Windows::Forms::PictureBox^  pictureBox1;
	protected: 
	private: System::Windows::Forms::Button^  button1;
	private: System::Windows::Forms::Button^  button2;
	private: System::Windows::Forms::Button^  button3;
	private: System::Windows::Forms::Timer^  timer1;
	private: System::ComponentModel::IContainer^  components;

	private:
		/// <summary>
		/// Required designer variable.
		/// </summary>


#pragma region Windows Form Designer generated code
		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		void InitializeComponent(void)
		{
			this->components = (gcnew System::ComponentModel::Container());
			this->pictureBox1 = (gcnew System::Windows::Forms::PictureBox());
			this->button1 = (gcnew System::Windows::Forms::Button());
			this->button2 = (gcnew System::Windows::Forms::Button());
			this->button3 = (gcnew System::Windows::Forms::Button());
			this->timer1 = (gcnew System::Windows::Forms::Timer(this->components));
			(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->pictureBox1))->BeginInit();
			this->SuspendLayout();
			// 
			// pictureBox1
			// 
			this->pictureBox1->Location = System::Drawing::Point(12, 12);
			this->pictureBox1->Name = L"pictureBox1";
			this->pictureBox1->Size = System::Drawing::Size(758, 450);
			this->pictureBox1->TabIndex = 0;
			this->pictureBox1->TabStop = false;
			this->pictureBox1->Click += gcnew System::EventHandler(this, &Form1::pictureBox1_Click);
			// 
			// button1
			// 
			this->button1->Location = System::Drawing::Point(12, 468);
			this->button1->Name = L"button1";
			this->button1->Size = System::Drawing::Size(75, 23);
			this->button1->TabIndex = 1;
			this->button1->Text = L"Iniciar";
			this->button1->UseVisualStyleBackColor = true;
			this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
			// 
			// button2
			// 
			this->button2->Location = System::Drawing::Point(93, 468);
			this->button2->Name = L"button2";
			this->button2->Size = System::Drawing::Size(75, 23);
			this->button2->TabIndex = 2;
			this->button2->Text = L"Parar";
			this->button2->UseVisualStyleBackColor = true;
			this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
			// 
			// button3
			// 
			this->button3->Location = System::Drawing::Point(174, 468);
			this->button3->Name = L"button3";
			this->button3->Size = System::Drawing::Size(75, 23);
			this->button3->TabIndex = 3;
			this->button3->Text = L"button3";
			this->button3->UseVisualStyleBackColor = true;
			this->button3->Click += gcnew System::EventHandler(this, &Form1::button3_Click);
			// 
			// timer1
			// 
			this->timer1->Tick += gcnew System::EventHandler(this, &Form1::timer1_Tick);
			// 
			// Form1
			// 
			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
			this->ClientSize = System::Drawing::Size(782, 503);
			this->Controls->Add(this->button3);
			this->Controls->Add(this->button2);
			this->Controls->Add(this->button1);
			this->Controls->Add(this->pictureBox1);
			this->Name = L"Form1";
			this->Text = L"Webcam";
			this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
			(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->pictureBox1))->EndInit();
			this->ResumeLayout(false);

		}
#pragma endregion
	private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
			 }
	private: System::Void pictureBox1_Click(System::Object^  sender, System::EventArgs^  e) {
				 
			 }
	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
				//if (video == nullptr)
				SAASCapturaNS::SAASCaptura^ video = (gcnew SAASCapturaNS::SAASCaptura());
				button2->Enabled = true;
				button1->Enabled = false;
				video->Inicializar_Webcam();
				pictureBox1->Image = video->GetFrame();
				this->timer1->Enabled = true;
				this->timer1->Interval = 33;
				this->timer1->Start();	
			 }
	private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
				 button2->Enabled = false;
				 button1->Enabled = true;
				 video->Finalizar();
				 pictureBox1->Image = nullptr;
				 this->timer1->Stop();
			 }
	private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) {		 
			 }
	private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) {
				System::Drawing::Bitmap^ frame = video->GetFrame();
				pictureBox1->Image=frame;
		}
	};
				 }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nunca usei o visual c++, mas, está ocorrendo algum erro ou simplesmente não está apresentando a imagem a cada X segundos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe esse sub-forum Plataforma .NET » Windows Applications seta.gif C/C++ ?!!? eu nao achei ..... mas consegui resolver o problema era :

 

Onde tinha :

 

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

//if (video == nullptr)

SAASCapturaNS::SAASCaptura^ video = (gcnew SAASCapturaNS::SAASCaptura());

button2->Enabled = true;

button1->Enabled = false;

 

Era pra ser :

 

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

//if (video == nullptr)

video = (gcnew SAASCapturaNS::SAASCaptura());

button2->Enabled = true;

button1->Enabled = false;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.