1

カメラに入る最大強度を示すゲージを作成しました。ゲージを作成するために、最初にパネルの背景にダイヤラーを配置し、次にそのパネルにあるpictureBoxと透明な背景を持つpictureBoxに針を描きました。

私のコードは次のとおりです...

private: System::Void FocusExposure_Load(System::Object^  sender, System::EventArgs^  e) {
                 th = gcnew Thread(gcnew ThreadStart(this,&FocusExposure::UpdateIntensity)); 
                th->Start();            
             }

void UpdateIntensity()
     {
         int intensity=0;
        Intensity_Values data;
         while(1)
         {
         data = ReadImage(cameraBuffer);
                 if(count == 1)
                 {
                     count++;
                    label14->Text =  Convert::ToString(data.Max);
                 }
             label7->Text =  Convert::ToString(data.Max);
             label8->Text =  Convert::ToString(data.Min);
             label9->Text =  Convert::ToString(data.Avg);
             label10->Text =  Convert::ToString(data.Max_Min);
            draw_Intens( data.Max);
         }
     }
private: void draw_Intens(int intensity)
             {

                 this->pictureBox1->Refresh();
                 double const PI = 3.14159265358979323;
                 float degree=angle_array[intensity]*PI/180;
                 circumPoint xy= cordinate_point(degree);

                 Graphics ^ graphics = pictureBox1->CreateGraphics(); 
                 SolidBrush^ shadowBrush = gcnew SolidBrush( Color::Blue );
                     Pen^ penCurrent = gcnew Pen(Color::Blue,3);
                                    graphics->FillEllipse(shadowBrush, 93, 93,14, 14);
                                    graphics->DrawLine(penCurrent, Point(100, 100), Point(xy.x, xy.y));
                                    delete penCurrent;
                                    delete shadowBrush;
                                    delete graphics;
            }
circumPoint cordinate_point(float degree)
         { 
             circumPoint pointxy;
             pointxy.x =  100+redius * cos(degree);
             pointxy.y =  100+redius * sin(degree);
             return pointxy;
         }

angle_arraydouble angle_array[]={126.000000,126.070313,126.140625,...,414.000000}は、これらの値を使用して針が回転する 4097 の角度値を持つ配列です。

ReadImage(cameraBuffer)は、Max、Min、Avg、Max_Min 強度値を返す関数です。

Intensity_Valuesは、Max Min Avg Max_Min 値の構造体です。

typedef struct {
   int  Max;
   int  Min;
   int  Avg;
   int Max_Min;
} Intensity_Values;

私のゲージはこんな感じです...

ここに画像の説明を入力

左側は最小強度 0 で、右側は最大強度値 4096 です。

今私の問題は、アプリケーションを実行しているときにアプリケーションが起動し、2 3 秒後にハングするか、動作が停止することです。問題はメモリリークかもしれないと思いますが、どこに問題があるのか​​わかりません。

この問題を解決するのを手伝ってください。

どんな助けでも大歓迎です。

ありがとう。

4

0 に答える 0