【问题标题】:Display image in pop-up window from c# class library在 c# 类库的弹出窗口中显示图像
【发布时间】:2012-04-27 20:27:23
【问题描述】:

我需要在 c# 类库创建的弹出窗口中显示位图图像。 这怎么可能?

我尝试了以下方法:

        Bitmap img = tpv.Img();
        Graphics graphics = Graphics.FromImage(img);
        graphics.DrawImage(img, 0, 0);

        Bitmap img = tpv.Img();
        PictureBox pb = new PictureBox();
        pb.Size = img.Size;
        pb.Image = img;
        pb.Show();

但是没有显示窗口。 是否可以获取类库来创建显示位图图像的弹出窗口?

【问题讨论】:

  • 我们说的是 winforms、asp.net 还是 WPF 应用程序?

标签: c# image bitmap popup class-library


【解决方案1】:

假设 WinForms,您需要将 PictureBox 添加到像 Form 一样的顶级 Window 中。如果您使用的是 WPF,则概念是相同的,只是您需要在显示窗口之前将图片框添加到网格或其他内容中。

using (Form form = new Form()) {
    Bitmap img = tpv.Img();

    form.StartPosition = FormStartPosition.CenterScreen;
    form.Size = img.Size;

    PictureBox pb = new PictureBox();
    pb.Dock = DockStyle.Fill;
    pb.Image = img;

    form.Controls.Add(pb);
    form.ShowDialog();
}

请注意,在我的示例中,它会将表单显示为模态。如果您需要非模态表单,请改为调用 form.Show() 并删除 using 块,这样您的表单就不会立即处理。

但是,更好的设计模式是设计您的类库方法以将图像返回到您的 UI,并让您的主 UI 显示该图像。框架 API 绝不应该像这样直接显示 UI。

【讨论】:

  • 非常感谢。它是一个没有任何 GUI 的测试框架,所以这只是一个“调试”/随机检查选项。
  • 不能正常工作!它应该是 form.ClientSize = img.Size;所写的代码切断了图像的底部。
猜你喜欢
  • 1970-01-01
  • 2022-10-04
  • 2021-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-26
相关资源
最近更新 更多