在运行时添加picturebox并更改其属性(从另一个方法)

时间:2016-12-28 14:01:53

标签: c#

我在C#中在运行时将一个PictureBox添加到Form中,它确实有效(我认为)。唯一的问题是我无法从外部或从方法内部更改PictureBox的属性,例如。我甚至无法改变BackColor。

这是我的尝试:

import cv2
import numpy

img = cv2.imread('thresh.png')
edges = cv2.Canny(img, 50, 150, apertureSize=3)
minLineLength = 0
maxLineGap = 5
lines = cv2.HoughLinesP(edges, 1, numpy.pi / 180, 100, minLineLength, maxLineGap)

for x in range(len(lines)):
    for x1, y1, x2, y2 in lines[x]:
        cv2.line(img, (x1, y1), (x2, y2), (0, 0, 0), 2)

cv2.imwrite('houghlines3.jpg', img)

PictureBox现在应该填满整个表格,并且背景为红色,但它不起作用。

另外,如何公开添加PictureBox"#34;所以我可以从另一种方法改变属性吗?

我试过这样:

private void Form1_Load(object sender, EventArgs e)
{
  PictureBox canvas = new PictureBox();
  canvas.Dock = DockStyle.Fill;
  canvas.BackColor = Color.Red;
}

1 个答案:

答案 0 :(得分:0)

这是一个好的开始:

PictureBox canvas = new PictureBox
{
  Dock = DockStyle.Fill,
  BackColor = Color.Red
};

private void button1_Click(object sender, EventArgs e)
{
  canvas.BackColor = Color.Red;
} 

但您必须将该框添加到表单中:

private void Form1_Load(object sender, EventArgs e)
{
  this.Controls.Add(canvas);
}

一旦按预期工作,您应该像canvas那样调用_canvas字段,因为这是此类(表单)的私有字段。