【问题标题】:How to use camera capture event of a form in another form?如何在另一个表单中使用表单的相机捕获事件?
【发布时间】:2021-08-31 11:48:38
【问题描述】:

我正在创建一个新的 UI,我想在 form2 上的 form1 中使用相机捕获事件(简而言之,我正在尝试将数据从 Form1 的 pictureBox1 传输到 Form2 的 pictureBox1。)我该如何实现?

谢谢...

【问题讨论】:

  • 向 Form2 添加一个公共方法(例如,public void SetImage(Image image) { pictureBox1.Image?.Dispose(); pictureBox1.Image = image; }),或者将两个 PictureBox 控件绑定到同一个 Bitmap 对象(在这种情况下不需要处理任何东西)。不清楚您想在第二个表单中显示什么。 -- 如果您需要在两个控件中显示完全相同的动画,使用共享位图会更好。
  • 请提供足够的代码,以便其他人更好地理解或重现问题。
  • 我实现了我想要的并在这里分享。 docs.microsoft.com/en-us/answers/questions/536222/…

标签: c# winforms camera


【解决方案1】:
  1. 在表格2中,实现一个公共方法来接受一张图片并显示在图片框中
  2. 在表格1中,在图片框的PAINT事件中,调用表格2的上述方法

示例代码

表格 1

public partial class Form1 : Form
{
    //Object of Form 2 in Form 1
    Form2 oFrm2 = new Form2();
    public Form1()
    {
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        //Load an image in the picture box
        pictureBox1.Load(@"E:\Temp\SmartRetire.jpeg");
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        //Consume the PAINT event of the picture box to notify a change in image
        pictureBox1.Paint += PictureBox1_Paint;
        //Show a blank form2
        oFrm2.Show();
    }

    //Raised when the picture box image is changed
    private void PictureBox1_Paint(object sender, PaintEventArgs e)
    {
        //Show the image in form 2
        oFrm2.ShowImage(pictureBox1.Image);
    }
}

表格 2

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }
    //Public method called from Form1 when the image is changed in picture box (in form1)
    public void ShowImage(Image oImage)
    {
        //Display the picture in form2
        pictureBox1.Image = oImage;
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多