private void button3_Click(object sender, EventArgs e)
        {
            Graphics g = this.CreateGraphics();
            FontFamily arialFamily = new FontFamily("Arial");
            Font arialFont = new Font(arialFamily, 16);
            StringFormat strFormat1 = new StringFormat();
            strFormat1.Alignment = StringAlignment.Center;
            strFormat1.Trimming = StringTrimming.EllipsisCharacter;
            strFormat1.LineAlignment = StringAlignment.Near;
            string str = "iiii";
            Rectangle rect1 = new Rectangle(10, 200, 20, 20);
            g.DrawString(str, arialFont, new SolidBrush(Color.Red), rect1, strFormat1);
        }我上面在窗体上面写了"iiii",当窗体被隐藏后再显示出来,写上的字就不见了,请问这个问题该如何解决?

解决方案 »

  1.   

    有两个方法可以解决:
    1:建立一个临时Bitmap,然后把要绘的内容都绘到这个Bitmap上,然后在button3_Click及Paint事件里绘这个Bitmap就是了。2:把你绘制的信息保存到内存中,然后在Paint事件里由保存的信息再绘制出来。
      

  2.   

    在Paint事件画
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 最新版本:20070212http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  3.   

    比如你可以用如下代码来绘制:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace DoubleBufferDraw
    {
    public partial class Other : Form
    {
    FontFamily arialFamily = new FontFamily("Arial");
    Font arialFont;
    StringFormat strFormat1 = new StringFormat();
    Rectangle rect1 = new Rectangle(10, 200, 20, 20);
    string str = null;
    public Other()
    {
    InitializeComponent();
    strFormat1.Alignment = StringAlignment.Center;
    strFormat1.Trimming = StringTrimming.EllipsisCharacter;
    strFormat1.LineAlignment = StringAlignment.Near;
    arialFont = new Font(arialFamily, 16);
    } private void button1_Click(object sender, EventArgs e)
    {
    Graphics g = this.CreateGraphics();
    str = "iiii";
    g.DrawString(str, arialFont, new SolidBrush(Color.Red), rect1, strFormat1);
    }
    protected override void OnPaint(PaintEventArgs e)
    {
    base.OnPaint(e);
    e.Graphics.DrawString(str, arialFont, new SolidBrush(Color.Red), rect1, strFormat1);
    }
    }
    }