GDI+问题,gdi问题
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:建立一个临时Bitmap,然后把要绘的内容都绘到这个Bitmap上,然后在button3_Click及Paint事件里绘这个Bitmap就是了。
2:把你绘制的信息保存到内存中,然后在Paint事件里由保存的信息再绘制出来。 在Paint事件画
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
最新版本:20070212
http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html 比如你可以用如下代码来绘制:
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);
}
}
} 越是底层的东西,耗资源越少吧
用户评论