已经生成了一个bitmap
public void setPos(string[] RoomNo, int num,System.Web.HttpServerUtility page)
{
BaseStr = page.MapPath(new judgeBuilding().chooseBuilding(RoomNo[0]));
bm = new Bitmap(page.MapPath(new judgeBuilding().choosePicture(RoomNo[0])));
g = Graphics.FromImage(bm);
PRStr = page.MapPath("PR.pos");
int building=RoomNo[0][0]-'0';

readRatioFile();

for(int i=0; i<Num; i++)
{
if(building == Convert.ToInt32(RatioData[i,0]))
{
building = i;break;
}
} conv.setRatio(RatioData[building,1],RatioData[building,2],RatioData[building,3],RatioData[building,4]);
this.readData();
if(tagData == false ||tagRatio == false) throw new Exception("还未读入数据。");
for(int i=0; i<num; i++)
{
int RoomPosNo = (RoomNo[i][2]-'0')*10+RoomNo[i][3]-'0';
_setSinglePos(RoomPosNo-1);
}
}
public Bitmap getBitmap(){
return this.bm;
}
其中bm是已经动态生成的图象,需要显示到页面上。
目前试过先保存为文件,再从文件中读取,但因为是动态生成的,不同的条件下会有不同的文件名,因此不能放到项目中去,生成的图象只有在本地机上可以访问,换另外一台机器就不能正确显示图像。
所以想问下到底有没有方法直接将bm画到页面上面?该怎么画?谢谢了

解决方案 »

  1.   

    楼主的需求和生成一个随机码,并显示的需求差不多
    用一个aspx页面来生成图片,然后让这个页面以图片流的方式输出。
    使用的页面就像使用一个普通图片一样的使用。例如1 生成图片流的页面叫getRandImg.aspx
    2 使用图片的页面,加一个image控件,然后如下设置url即可
    <asp:Image ID="Image1" ImageUrl="~/getRandImg.aspx" runat="server" />可以参考我的博客文章《ASP.NET随机码生成示例》
    http://www.cnblogs.com/heekui/archive/2007/01/06/613609.html
      

  2.   

    另外一个页面
    <img src=xxx.aspx>
      

  3.   

    一个页面要么是文本,要么是二进制内容如果是后者,只能整个页面只有一张图片
    一般的做法就是放到另外的aspx文件,Img的src指定为此文件
      

  4.   

    顺便还有一个问题,以前是直接生成一个temp.jpg的文件,因为会有很多用户,用户进行操作后会直接修改这个temp文件,遇到的情况是,当一个用户操作后,产生的temp图像会是按该用户的意愿生成的,符合该用户的要求,但是当另外一个用户操作以后,temp图像又会变化,所以temp图像是随用户而不是某一个特定用户操作而变化的,这就导致第一个用户想保存图片的时候,保存的图片实际上是符合另外一个用户要求的图片。
    因此想到不从服务器上读去图片,用了各位的方法以后,主要问题也就是上面的问题实际上是解决了。但是,当用户通过不同的条件生成两次图片以后,第一次生成的图片又会被第二次的覆盖。这是一个问题,前面也遇到过。
    ////////////////////////////////////////////////////