注册 登录
编程论坛 ASP.NET技术论坛

请问大家一个小问题

laojiang8 发布于 2007-05-08 13:39, 698 次点击

我在注册时发现一个小东西,就是显示图片,如果看不清的话可以点击显示换一张图片,点击后原来的东西还在,而图片文字变了,这个小功能 是如何实现的?我的怎么会实现不了了?

相应代码
<script language="javascript">
function yzmgb()
{
document.Form1.IMG1 .src ="check.aspx";
}
</script>
</HEAD>

<img id="IMG1" height="32" onclick="yzmgb();" src="check.aspx"
style="Z-INDEX: 103; LEFT: 600px; WIDTH: 72px; CURSOR: hand; POSITION: absolute; TOP: 224px; HEIGHT: 32px"
width="72">

13 回复
#2
川流不息2007-05-08 14:37
点击后原来的东西还在,而图片文字变了

================

什麼意思?是圖片變了?
#3
tel19822007-05-08 14:41
叙述有点不清楚。
#4
bygg2007-05-08 16:13
有提示错误吗?
#5
xiezili2007-05-08 16:23
验证码吗?
#6
laojiang82007-05-08 17:47
就是图片上的字符看不清楚,想换一张图片
#7
xiezili2007-05-08 17:54

你没办法换图片上的文字,只能换另一张图片!
但是从你的代码上看,你放的并不是图片,而是一个页面!

#8
laojiang82007-05-08 17:56
对呀,这样也可以吧,但是执行上面的代码时却不能达到我想的结果呀
#9
xiezili2007-05-08 18:05
那你得在你页面的PageLoad的事件里更改文字内容!要么就指定另外一个页面!
#10
川流不息2007-05-08 18:06
你要的效果到底是什麼?你給的是同一個頁面,怎麼看我都看不到他會變化。
#11
laojiang82007-05-08 18:09

就是在一个登录页面下,有一个验证码,这个验证码的图片是由一个页面生成的,如果登录时看不清这个图片的东西时,可以点击一个这个图片,就可以换一张图片,也就是重新加载一下这个图片页面,而原来页面的内容保持不变

#12
laojiang82007-05-08 18:37

http://market.sz5.cn/complaint.html
就像是这里面的图片点击的效果

#13
laojiang82007-05-10 10:58
请大家帮下忙了,我都快郁闷死了
#14
xiezili2007-05-10 12:19

你在点击图片以后,指定的页面还是原来的页面,当然看不到任何改变了!
你可以在页面的PageLoad事件里面改变页面图片上的文字!或者在图片的onclick事件中,指定另外一个页面才会有改变呀,
如果只是想实现验证码的功能的话,最好将做一个验证码的WEB控件。
参考以下代码:

using System;
  using System.Web.UI;
  using System.Web.UI.WebControls;
  using System.ComponentModel;
  using System.IO;
  using System.Drawing;
  using System.Drawing.Drawing2D;
  using System.Drawing.Imaging;
  
  namespace WebValidateCode
  {
    public enum GraphicType
  {
  Jpg = 0,
  Gif = 1,
  Png = 2,
  Bmp = 3,
  }
  
  //[ToolboxBitmap(@"D:\DotnetApp\ValidateCode\ValidateCode.bmp") ] //设置控件在工具箱上的图标
  public class ValidateCode : System.Web.UI.WebControls.WebControl ,INamingContainer
  {
  private int pCodelen=5;
  private int pChartWidth=100;
  private int pChartHeight=20;
  
  private GraphicType pChartType;
  
  private string pAuthenCode;
  
  private string pTempImageURLPath="/temp";
  private string pAuthenImageFullname;
  private string pAuthenImageFullURL;
  
  //生成校验码的变量 start
  private Bitmap validateImage;
  private Graphics g;
  //生成校验码的变量 End
  
  private TextBox txt=new TextBox();
  private System.Web.UI.WebControls.Image img= new System.Web.UI.WebControls.Image();
  
  #region 定义控件事件
  
  public delegate void GraphicCreated(object sender, EventArgs e);
  public event EventHandler GraphicOK;  //在校验图片生成结束以后触发
  
  protected virtual void OnGraphicOK(object sender, EventArgs e)
  {
  if (GraphicOK != null)
  {
  //Invokes the delegates.
  GraphicOK(sender, e);
  }
  }
  
  #endregion
  
  #region 控件属性
  
  //生成校验码的长度
  [Bindable(true),Browsable(true),Category("Appearance"),DefaultValue(true),Description("需要验证码的长度,建议在5~8位之间!")]
  public int CodeLength
  {
  get
  {
  return pCodelen;
  }
  
  set
  {
  pCodelen = value;
  }
  }
  
  //生成校验码的长度
  [Bindable(true),Browsable(true),Category("Appearance"),DefaultValue(true),Description("生成验证码图片的临时存放路径,要求必须是网站下的虚拟目录!")]
  public string TempImageURLPath
  {
  get
  {
  return pTempImageURLPath;
  }
  
  set
  {
  pTempImageURLPath = value;
  }
  }
  
[Bindable(true),Browsable(true),Category("Appearance"),DefaultValue(GraphicType.Jpg), Description("选择生成校验图文件的类型(Jpg;Gif;Png;Bmp)!")]
  public GraphicType ChartType
  {
  get
  {
  return pChartType;
  }
  
  set
  {
  pChartType = value;
  }
  }
  
  
  //生成校验码图片的宽度
  public int ChartWidth
  {
  get
  {
  return pChartWidth;
  }
  
  set
  {
  pChartWidth = value;
  }
  }
  
  //生成校验码图片的高度
  public int ChartHeight
  {
  get
  {
  return pChartHeight;
  }
  
  set
  {
  pChartHeight = value;
  }
  }
  
  //需要生成的校验码
  public string AuthenCode
  {
  get
  {
  return pAuthenCode;
  }
  
  set
  {
  pAuthenCode = value;
  }
  }
  
  #endregion
  
  /// <summary>
  /// 将此控件呈现给指定的输出参数。
  /// </summary>
  /// <param name="output"> 要写出到的 HTML 编写器 </param>
  protected override void Render(HtmlTextWriter output)
  {
  
  System.Web.UI.WebControls.Image objImage;
  //TextBox objTxt;
  
  
  //绘制包含的控件
  objImage = (System.Web.UI.WebControls.Image) Controls[0];
  //objTxt = (TextBox) Controls[1];
  
  if(pAuthenCode==null)
  pAuthenCode=GetValidateCode();
  
  OnGraphicOK(this,EventArgs.Empty );
  
  GetRandomImage(pAuthenCode);
  objImage.ImageUrl=pAuthenImageFullURL;
  
  objImage.RenderControl(output);
  
  }
  
  /// <summary>
  /// 给控件添加子控件
  /// </summary>
  protected override void CreateChildControls(  )
  {
  
  //Controls.Add(btn);
  Controls.Add(img);
  //Controls.Add(txt);
  }
  
  /// <summary>
  /// 控件Load时候属性的初始化
  /// </summary>
  /// <param name="e"></param>
  protected override void OnLoad(System.EventArgs e)
  {
  EraseOldGraphic();  //删除过期的图片
  }
  
  /// <summary>
  /// 生成随机的
  /// </summary>
  private void MakeRandomFileName()
  {
  string strRandName=DateTime.Now.Ticks.ToString()+".jpg";
  pAuthenImageFullname=this.Page.MapPath(TempImageURLPath)+@"\"+strRandName;
  pAuthenImageFullURL=TempImageURLPath+"/"+strRandName;
  }
  
  
  private void GetRandomImage(string strValidateCode)
  {
  //生成随即图片的全名,和全URL
  MakeRandomFileName();
  
  validateImage = new Bitmap(pChartWidth, pChartHeight, PixelFormat.Format24bppRgb); // .Format24bppRgb);
  g = Graphics.FromImage(validateImage);
  
  g.Clear(Color.LightGray) ;
  
  //g.DrawString(strValidateCode , new Font("宋体",16,FontStyle.Bold),new SolidBrush(Color.DarkRed),new PointF(2,2));
  
  for(int i=0;i<strValidateCode.Length;i++)
  {
  Random r = new Random();
  PointF startPos=new PointF(r.Next(3,6)+(r.Next(12,14)*i ),r.Next(-1,2) );
  
  g.DrawString(strValidateCode.Substring(i,1) , new Font("宋体",14,FontStyle.Italic),new SolidBrush(Color.Blue),startPos);
  }
  
  
//g.FillRectangle(new LinearGradientBrush(new Point(0,0), new Point(120,30), Color.FromArgb(0,0,0,0),Color.FromArgb(255,255,255,255)),0,0,120,30);
  switch(pChartType)
  {
  case GraphicType.Jpg:
  
  validateImage.Save(pAuthenImageFullname, ImageFormat.Jpeg);
  break;
  
  case GraphicType.Gif:
  
  validateImage.Save(pAuthenImageFullname, ImageFormat.Gif);
  break;
  
  case GraphicType.Png:
  
  validateImage.Save(pAuthenImageFullname, ImageFormat.Png);
  break;
  
  case GraphicType.Bmp:
  
  validateImage.Save(pAuthenImageFullname, ImageFormat.Bmp);
  break;
  
  default:
  validateImage.Save(pAuthenImageFullname, ImageFormat.Jpeg);
  break;
  
  }
  
  validateImage.Dispose();
  
  g.Dispose();
  
  }
  
  /// <summary>
  /// 动态从数字和字母组成的元素中动态选择生成校验码
  /// </summary>
  private string GetValidateCode()

1