在c#类库的弹出窗口中显示图像

Cas*_*sen 5 c# class-library image bitmap popup

我需要在ac#class library创建的弹出窗口中显示Bitmap图像.这怎么可能?

我尝试过以下方法:

        Bitmap img = tpv.Img();
        Graphics graphics = Graphics.FromImage(img);
        graphics.DrawImage(img, 0, 0);
Run Code Online (Sandbox Code Playgroud)

        Bitmap img = tpv.Img();
        PictureBox pb = new PictureBox();
        pb.Size = img.Size;
        pb.Image = img;
        pb.Show();
Run Code Online (Sandbox Code Playgroud)

但是没有显示窗口.是否有可能获得一个类库来创建一个显示位图图像的弹出窗口?

Dav*_*son 13

假设WinForms,您需要将PictureBox添加到顶级窗口,如Form.如果您使用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();
}
Run Code Online (Sandbox Code Playgroud)

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

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

  • 这**不能**正常工作!应该是 form.ClientSize = img.Size; 编写的代码会切掉图像的底部。 (3认同)