我想实时看水印效果
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            Graphics dc = Graphics.FromImage(this.pictureBox1.Image);
            dc.DrawString(this.textBox1.Text, new Font("新宋体", 32), Brushes.Red, 24, 26);
            //dc.Clear();            //dc.d
            dc.Dispose();
            this.pictureBox1.Invalidate();
        }可是水印打上去在打是重叠的
怎么样打上去在修改文字的时候能把先前的去掉
在打上修改后的文字

解决方案 »

  1.   

    比如this.Invalidate(this.ClientRectangle)
      

  2.   

    樓上正確,用refresh()一下也可以吧。
      

  3.   

    private void textBox1_TextChanged(object sender, System.EventArgs e)
    {
    this.pictureBox1.Invalidate();
    } private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
    e.Graphics.DrawString(this.textBox1.Text, new Font("新宋体", 32), Brushes.Red, 24, 26);
    }
      

  4.   

    private void textBox1_TextChanged(object sender, System.EventArgs e)
    {
    this.pictureBox1.Invalidate();
    }private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
    e.Graphics.DrawString(this.textBox1.Text, new Font("新宋体", 32), Brushes.Red, 24, 26);
    }
    这个代码 没效果
    关于 平民百姓的
    比如this.Invalidate(this.ClientRectangle)
    我的代码是这样的        private void textBox1_TextChanged(object sender, EventArgs e)
            {
                Graphics dc = Graphics.FromImage(this.pictureBox1.Image);
                dc.DrawString(this.textBox1.Text, new Font("新宋体", 32), Brushes.Red, 24, 26);
                //dc.Clear();            //dc.d
                dc.Dispose();
                this.pictureBox1.Invalidate();
            }不知道怎么改进
      

  5.   

    private void textBox1_TextChanged(object sender, System.EventArgs e)
    {
    Graphics dc = Graphics.FromImage(this.pictureBox1.Image);        
    dc.Dispose();
    this.pictureBox1.Invalidate(pictureBox1.ClientRectangle);
    } private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
    Graphics dc =e.Graphics;
    dc.DrawString(this.textBox1.Text, new Font("新宋体", 32), Brushes.Red, pictureBox1.ClientRectangle);
    }
      

  6.   

    楼主你那样像Image对象上写字,写上去就不好去掉了。你想想网上加了水印的图片如果能轻易去掉的话,那么加水印还有什么意义呢?
    你应该重绘控件的工作区,而不是图像的,再说你往图像上写字,也不叫重绘了。
      

  7.   

    楼主你那样像Image对象上写字,写上去就不好去掉了。你想想网上加了水印的图片如果能轻易去掉的话,那么加水印还有什么意义呢?
    你应该重绘控件的工作区,而不是图像的,再说你往图像上写字,也不叫重绘了。有道理
    我只是模拟一个效果就行了
    并一定是一定要在图片上打上文字
    我本来是TEXTBOX控件放上面来模拟的
    因为有背景所以不好看
      

  8.   

    private void textBox1_TextChanged(object sender, System.EventArgs e)
    {
    Graphics dc = Graphics.FromImage(this.pictureBox1.Image);       
    dc.Dispose();
    this.pictureBox1.Invalidate(pictureBox1.ClientRectangle);
    }private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
    Graphics dc =e.Graphics;
    dc.DrawString(this.textBox1.Text, new Font("新宋体", 32), Brushes.Red, pictureBox1.ClientRectangle);
    }你的代码在textBox1_TextChanged的时候是可以触发pictureBox1_Paint事件的
    但是文字没写上去
    也没有清除效果
      

  9.   

    private void textBox1_TextChanged(object sender, System.EventArgs e)
    {
    Graphics dc = Graphics.FromImage(this.pictureBox1.Image);       
    dc.Dispose();
    this.pictureBox1.Invalidate(pictureBox1.ClientRectangle);
    }private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
    Graphics dc =e.Graphics;
    dc.DrawString(this.textBox1.Text, new Font("新宋体", 32), Brushes.Red, pictureBox1.ClientRectangle);
    }的代码是对的
    谢谢了