我做了一个显示最大强度的测量仪。为了制作测量仪,我首先在一个面板的背景中放置一个拨号器,然后在该面板上的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_array 是一个数组double angle_array[]={126.000000,126.070313,126.140625,...,414.000000}
,具有4097角度值,使用这些值将针旋转。
ReadImage(cameraBuffer)是一个正在返回的函数 马克斯, 敏 平均, 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秒后它会挂起或者可以说停止工作。我认为问题可能是内存泄漏,但我不知道问题出在哪里。
请帮我摆脱这个问题。
任何帮助将不胜感激。
感谢。