none
在启动调试后,在浏览器里面显示一张图片,却没有hello字样,为什么?另外也不能单击查看-源代码(浏览器这个选项是灰的,为什么?)谢谢 RRS feed

  • 问题

  • using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Drawing;
    
    public partial class xubitmap : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            CreateImage("1234");
            Response.Write("hello");
        }
        private void CreateImage(string checkCode)
        {
            int iwidth = (int)(checkCode.Length * 11.5);
            //封装 GDI+ 位图,此位图由图形图像及其属性的像素数据组成  .指定宽度和高度。以象素为单位
            System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 20);
            //封装一个 GDI+ 绘图图面。无法继承此类.  从指定的 Image 创建新的 Graphics
            Graphics g = Graphics.FromImage(image);
            //font封装在特定设备上呈现特定字体所需的纹理和资源  (字体,大小,字体样式)
            Font f = new System.Drawing.Font("Arial", 10, System.Drawing.FontStyle.Bold);
            /**Brush定义用于填充图形形状(如矩形、椭圆、饼形、多边形和封闭路径)的内部的对象
            SolidBrush(Color.White)初始化指定颜色 指定画笔颜色为白色**/
            Brush b = new System.Drawing.SolidBrush(Color.White);
            //清除整个绘图面并以指定背景色填充
            //g.Clear(Color.Red);
            g.Clear(Color.Yellow);
    
            /**在指定位置并且用指定的 Brush 和 Font 对象绘制指定的文本字符串
            (指定的字符串,字符串的文本格式,绘制文本的颜色和纹理,所绘制文本的左上角的 x 坐标,坐标)**/
            g.DrawString(checkCode, f, b, 3, 3);
            //定义用于绘制直线和曲线的对象。(指示此 Pen 的颜色,指示此 Pen 的宽度的值)
            Pen blackPen = new Pen(Color.Blue, 0);
    
            Random rand = new Random();
            for (int i = 0; i < 4; i++)
            {
                //随即高度
                int y = rand.Next(image.Height);
                //绘制一条连接由坐标对指定的两个点的线条    
                //(线条的颜色、宽度和样式,第一个点的 x 坐标,第一个点的 y 坐标,第二个点的 x 坐标,第二个点的 y 坐标)
                g.DrawLine(blackPen, 0, y, image.Width, y);
            }
            //创建存储区为内存的流
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            //将此图像以指定的格式保存到指定的流中(将其保存在内存流中,图像的格式)
            image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            //清除缓冲区将流中的内容输出
            Response.ClearContent();
            //获取输出流的类型
            Response.ContentType = "image/Jpeg";
            //将二进制字符串写入HTTP输出流
            Response.BinaryWrite(ms.ToArray());
            g.Dispose();
            image.Dispose();
        }
    }
    在启动调试后,在浏览器里面显示一张图片,却没有hello字样,为什么?另外运行后也不能单击浏览器查看-源代码(浏览器这个选项是灰的,为什么?)谢谢

    maiyude
    2010年3月7日 9:21

答案

  • Response.ContentType = "image/Jpeg";
    因为这行代码,服务端将返回类型设置成了image/Jpeg所以你的Response.Write()里的东西就不会再输出

    还有,浏览器查看源代码查看的是基于文本的源代码,由于你将返回类型设置成了Image/Jpeg,这是2进制代码,所以客户端浏览器不能查看源代码

    希望回答对你有帮助~
    2010年3月7日 10:18

全部回复

  • Response.ContentType = "image/Jpeg";
    因为这行代码,服务端将返回类型设置成了image/Jpeg所以你的Response.Write()里的东西就不会再输出

    还有,浏览器查看源代码查看的是基于文本的源代码,由于你将返回类型设置成了Image/Jpeg,这是2进制代码,所以客户端浏览器不能查看源代码

    希望回答对你有帮助~
    2010年3月7日 10:18
  • 如果你这里即要显示文本与图片可以使用下面的方式

    <img src="xubitmap.aspx" /> Hello

    知识改变命运,奋斗成就人生!
    2010年3月8日 4:51
    版主