将动态创建的位图写入面板(或任何其他控件)



现在我有以下代码,它可以很好地在网页中显示我动态创建的图像,但它覆盖了那里的任何控件。如何在特定控件中显示图像?

理想情况下,我希望它显示在我在页面上定义的面板 (Panel1) 中。

        Response.Clear();
        Response.ContentType = "image/png";
        Bitmap bmp = new Bitmap(W, H,  PixelFormat.Format24bppRgb);
        Graphics g = Graphics.FromImage(bmp);
        //lots of drawing code
        using (MemoryStream ms = new MemoryStream())
        {
            bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
            ms.WriteTo(Response.OutputStream);
        }
        bmp.Dispose();
        Response.End();

正如我所说,这工作得很好,除了它用图像覆盖了我在页面上的任何控件,而我想限制它保留在面板中。

有没有办法做到这一点?

您需要在

面板内image控件,并且该控件的ImageUrl属性必须设置为将其请求发送到新的pagehandler,在该页面上,您需要写下您的bitmap,我已经为此发布了解决方案...这里。。。

检查是否

假设你有一个名为PageA.aspx的页面,其中包含一个panel,你需要一个image元素,在面板内,如下所示:

<asp:Image ID="Image1" 
    runat="server" 
    CssClass="w120px h120px" 
    ImageUrl='newpage.aspx' />

关于ImageUrl属性的通知...

此图像向newpage.aspx发送请求以获取图片...在newpage.aspx page_load中,您需要将包含图片的MemoryStream写到Response中,如下所示:

protected void Page_Load(object sender, EventArgs e)
    {
        Response.Clear();
        Response.ContentType = "image/png";
        Bitmap bmp = new Bitmap(W, H, PixelFormat.Format24bppRgb);
        Graphics g = Graphics.FromImage(bmp);
        //lots of drawing code
        using (MemoryStream ms = new MemoryStream())
        {
            bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
            Response.BinaryWrite(ms.ToArray());
        }
        bmp.Dispose();
        Response.End();
    }

相关内容

  • 没有找到相关文章

最新更新