我正在使用c#.net和visual studio 2008在Windows CE 5.0中开发一个应用程序。 我想通过创建用户控件对象在主用户控件中显示一些用户控件。 在主用户控件中加载用户控件时,应用程序闪烁。
例如我有1个用户控件,其中有1个按钮图像,我想显示该用户控件的20个按钮。
`protected override void OnPaint(PaintEventArgs e) { //base.OnPaint(e); 图形gxOff = e.Graphics; 图形g;
//Paint the string
Font boldFont = new Font("Tahoma", 8.0F, FontStyle.Bold);
Color penColor = Color.FromArgb(48, 48, 48);
StringFormat drawFormat = new StringFormat();
drawFormat.Alignment = StringAlignment.Center;
if (m_bmpOffscreen == null) //Bitmap for doublebuffering
{
m_bmpOffscreen = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height);
}
g = Graphics.FromImage(m_bmpOffscreen);
g.Clear(this.BackColor);
if (!Disabled)
{
backgroundImage = unselected_img;
if (selected)
{
backgroundImage = selected_img;
g.DrawImage(backgroundImage, this.ClientRectangle, new Rectangle(0, 0, backgroundImage.Width, backgroundImage.Height), GraphicsUnit.Pixel);
}
else
g.DrawImage(backgroundImage, this.ClientRectangle, new Rectangle(0, 0, backgroundImage.Width, backgroundImage.Height), GraphicsUnit.Pixel);
}
else
{
backgroundImage = disabled_img;
g.DrawImage(backgroundImage, this.ClientRectangle, new Rectangle(0, 0, backgroundImage.Width, backgroundImage.Height), GraphicsUnit.Pixel);
}
g.DrawString(this.Content, boldFont, new SolidBrush(penColor), new RectangleF(0, 3, 20, 20), drawFormat);
gxOff.DrawImage(m_bmpOffscreen, 0, 0);
}`
请帮助解决这个问题。
提前致谢。
答案 0 :(得分:0)
你的后台缓冲区代码看起来不错,不过我建议保留你的Graphics对象。您可以在OnResize中处理和更新它和后台缓冲区Bitmap - 确保检查有效大小。我怀疑你可能会看到OnPaintBackground的默认行为闪烁,尝试覆盖并禁止它。