我想把一个图像显示在页面的指定位置上,基本想法就是建一个div,用position:absolute指定位置,然后再建一个Image对象,放进div里面。但是有很多问题:
1、使用asp.net 2.0,在Default.aspx.cs文件的Page_Load里用了
String div = "<div id=\"div1\" style=\"position:absolute;left:200;top:200;\"></div>";
Response.Write(div);
但是不知道怎么调用这个东西,用(HtmlGenericControl)this.FindControl("div1")报错。所以打算用Panel代替;
2、用了Panel,但是页面出来以后什么也没有,看源文件发现<div></div>在</html>后面。所以打算添加PlaceHolder作容器;
3、添加了PlaceHolder,Panel也放进去了,用了
Panel panel1 = new Panel();
panel1.Height = 200;
panel1.Width = 200;
panel1.BorderWidth = 1;
panel1.Style.Add("position", "absolute");
panel1.Style.Add("left", "200");
panel1.Style.Add("top", "200");
panel1.BorderColor = Color.Red;
但是发现位置没法指定了,大概是PlaceHolder的问题吧。但是不用PlaceHolder又不知道怎么放在<body></body>里;
4、最后先不管位置,想在Panel里面放一个UpdatePanel,UpdatePanel里面再放一个Image,最后页面源码里面只有
<div style="border-color:Red;border-width:1px;border-style:solid;height:200px;width:200px;position:absolute;left:200;top:200;">
</div>,中间什么都没有,不知道怎么回事。

解决方案 »

  1.   

    UpdatePanel 是ajax 的panel1.Style.Add("position", "absolute"); 
    panel1.Style.Add("left", "200px"); 
    panel1.Style.Add("top", "200px"); 
    panel1.BorderColor = Color.Red; Image img = new Image();
    pannel1.Controls.Add(img);this.Controls.Add(pannel1);
      

  2.   

    1.ASP.NET中应该完全杜绝Response.Write的使用,全部使用控件,或者你自己编写控件在Render()方法里使用HtmlTextWriter输出HTML。其次,因为你用Response.Write写出去的已经是结果HTML,不是控件,也不会存在于控件树当中,所以FindControl当然找不到。2.Panel理论上是可行的:<asp:Panel ID="imgHolder" runat="server" ...><img ... /></asp:Panel>。3.PlaceHolder理论上也是没问题的。4.你最好还是贴更多的代码出来吧,我看不出问题所在。
      

  3.   

    现在已经都能显示出来了,剩下的问题就是Panel的位置怎么设定,我把代码贴出来,高手看看。
    cs文件里的Page_Load:
    protected void Page_Load(object sender, EventArgs e)
    {
            Panel panel1 = new Panel();
            panel1.Height = 200;
            panel1.Width = 200;
            panel1.BorderWidth = 1;
            panel1.Style.Add("position", "absolute");
            panel1.Style.Add("left", "200");
            panel1.Style.Add("top", "200");
            panel1.BorderColor = Color.Red;        UpdatePanel UpdatePanel1 = new UpdatePanel();        System.Web.UI.WebControls.Image image = new System.Web.UI.WebControls.Image();
            image.ImageUrl = "unchecked.png";
            image.Height = 16;
            image.Width = 16;        UpdatePanel1.ContentTemplateContainer.Controls.Add(image);
    panel1.Controls.Add(UpdatePanel1);
            PlaceHolder1.Controls.Add(panel1);
    }aspx文件:
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
            <asp:ScriptManager ID="ScriptManager1" runat="server" />
            <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
        </form>
    </body>
    </html>
      

  4.   

    除了上面的问题,还有一个问题,我想在程序中临时画一个图,然后存成图像文件,最后再显示在网页上,我用了这样的代码来存文件:
    Bitmap objBitmap;
    Graphics objGraphics;
    objBitmap = new Bitmap(100, 100);
    objGraphics = Graphics.FromImage(objBitmap);
    objGraphics.DrawLine(new Pen(Color.Red), 0, 0, 100, 100);
    objBitmap.Save("c:\\test.gif",ImageFormat.Gif);
    objBitmap.Dispose();
    objGraphics.Dispose();但是总是存不上,存哪儿都存不上,不知道为什么,有什么保存的方法么,或者是否可以直接将这个objGraphics或者objBitmap直接显示成<image>的什么的东西?
      

  5.   

    String div = " <div id=\"div1\" style=\"position:absolute;left:200;top:200;\" > </div >"; 
    是不是少写了 runat="server" 所以找不到控件