【发布时间】:2017-12-27 10:50:43
【问题描述】:
决定用我正在使用的实际代码重新发布
尝试实时显示来自相机的图像。当程序初始化时,图片框应该开始显示图像(参见图片1)。当我移除一个物体时,我得到的图像是(参考图片2)。
但问题是当我放回对象时,我应该能够得到一个类似于图片1但看起来像图片2的图像。
我想通过调用pictureBox.Refresh() 它会自动重绘/重绘图像?但它似乎没有正确刷新。
// R Mode Tab
private void RModeToolStripMenuItem_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
}
// Timer for R mode
private void timer1_Tick(object sender, EventArgs e)
{
// Grab buffer from camera
camera.grab(out buffer);
accessRMode(buffer);
pictureBox.Refresh();
// Release buffer
camera.Release();
}
// For accessing R Mode
private void accessRMode(buffer)
{
int numberOfScansR = buffer.Height;
bitmapHeight = numberOfScansR;
// Loop through all scans in the buffer.
int CompWidth = buffer.Components["R mode"].Format.Width;
bitmapWidth = CompWidth;
// Get pointer to beginning of scan number 'scan' of R mode
ushort[,] data = buffer.Components["R mode"].GetRows<ushort>(0, numberOfScansR);
for (int scan = 0; scan < numberOfScansR; scan++)
{
// Loop through all elements in each scan.
for (int col = 0; col < CompWidth; col++)
{
ushort val = data[scan, col];
if (val != 0)
{
sumR += val;
val = (ushort)(val / 257);
drawpix(col, scan, (int)val, (int)val, (int)val);
countR++;
}
}
}
}
// Draw pixel method
private void drawPix(int x, int y, int r, int g, int b)
{
((Bitmap)pictureBox.Image).SetPixel(x, y, Color.FromArgb(r, g, b));
return;
}
我尝试将 pictureBox.Refresh() 替换为
pictureBox.Invalidate();
或
pictureBox.Invalidate()
pictureBox.Update();
但它并没有解决问题
【问题讨论】:
-
这是他的问题,他用完整的代码再次发布,他在上面提到过。请先阅读问题O_O
-
@BarrJ:Plutonix 确实首先阅读了这个问题,这就是他们如何判断这是另一个问题的完全相同的副本。如果 OP 想要改进帖子,这样做的方法是改进该帖子,而不是第二次发布完全相同的问题。
标签: c# image winforms picturebox pixel