(WinForm) MDI 窗体背景图闪烁的问题:

bflovesnow 2005-03-23 11:19:33
主窗体 Main.cs 为 MDI 容器时的背景图片无法直接添加
所以用了以下代码实现了 MDI 的背景图:

System.Drawing.Image img;
private void MainForm_Load(object sender, System.EventArgs e)
{
img = Image.FromFile(@"背景.jpg");
this.Controls[this.Controls.Count - 1].Paint += new PaintEventHandler(Form1_Paint1);
}//MainForm_Load
private void Form1_Paint1(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = Graphics.FromHwnd(this.Controls[this.Controls.Count - 1].Handle);
g.DrawImage(img, 0, 0, this.Controls[this.Controls.Count - 1].Width , this.Controls[this.Controls.Count - 1].Height );
}

这样是可以显示图片了
但当我就像本论坛一样改变左边树区的显示状态时
图片会产生比较强烈的闪烁
所以采用下面的代码来实现双冲,在 Main.cs 的构造函数里:

SetStyle(ControlStyles.ResizeRedraw | ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint,true);

UpdateStyles();

但并没有一点改观。

特来寻求解决之道,谢谢。


还有一个小问题,就是模态和非模态窗本的问题:
如果点击模态窗体之外,你会发现窗体在哗哗的闪动
记得在 Delphi 中的 MDI 窗体中,可以设置非模态窗体的显示位置永远在最前
这样做是因为可以在点击非模窗体之外不产生闪动现象
.NET 也可以设置,但 Delphi 中的要比在 .NET 中设置的效果好
因为在 .NET 中设置后,本窗体不会随着 MDI 窗体变化而变化
就是说,MDI 窗体隐藏了,但它依然不动:(

不知我讲清楚了没。这个问题不用太观注,主要就是上面的背景图片的问题,赫赫~~~
...全文
717 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimh 2005-03-23
  • 打赏
  • 举报
回复
同意楼上的,直接添加
心情解码 2005-03-23
  • 打赏
  • 举报
回复
:)







--
tangyong12 2005-03-23
  • 打赏
  • 举报
回复
可以直接添加的,在MainForm的backimage属性选择图片就OK了
bflovesnow 2005-03-23
  • 打赏
  • 举报
回复
up
bflovesnow 2005-03-23
  • 打赏
  • 举报
回复
不知楼上几位有否真的试过??
添加是可以,但并不显示~~~

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧