winform中对于form设置backgroundimage时会出现窗口无法显示的情况

WinForm开发中Panel控件的核心应用与高级技巧详解 在桌面应用开发中,容器控件是实现复杂界面布局和功能分区的基石。其核心原理在于通过逻辑分组和统一管理,将相关UI元素组织在一起,从而提升代码的可维护性和界面结构的清晰度。这一技术价值体现在能够高效构建动态内容加载、选项卡切换、可折叠区域等高级交互场景。例如,在C# WinForm开发中,Panel控件作为最基础的容器,通过其Dock、Anchor、AutoScroll等关键属性,结合SuspendLayout/ResumeLayout性能优化方法,可以解决界面闪烁、内存管理等常见工程问题。本文聚焦Panel控 阅读详情

在对一个已经成型的软件添加一个简单的欢迎界面是,偷懒只用一个不带边框的form来做,在主窗口初始化前显示该欢迎form,代码如下:

public FrameWin()
        {
            WelcomeForm welcome = new WelcomeForm();
            welcome.Show();
            Thread.Sleep(2000);
            welcome.Close();
            InitializeComponent();
}

WelcomeFrom为欢迎界面窗口,当设置backgroundimage属性时,发现第一次引用资源,默认layout如下图,这时欢迎界面正常显示;

但是当设置backgroundimagelayout属性为Zoom或者Stretch时,再打开软件运行,发现主程序界面初始化前的2s延时照常进行,但是这2s内丝毫看不到欢迎界面的影子,无奈改回backgroundimagelayout属性为tile时,仍看不到欢迎界面,邪了!!此时相关属性如下:




为究其原因,就把这个form删掉重新创建,然后对比属性修改前后的Designer文件变化,记录如下,

未设置backgroundimage时,form初始化信息如下,这时欢迎界面可以显示,只是显示一个窗口底色矩形而已:

显示如下:


代码如下:


private void InitializeComponent()
        {
            this.SuspendLayout();
            // 
            // WelcomeForm
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(570, 427);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.Name = "WelcomeForm";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "WelcomeForm";
            this.ResumeLayout(false);

        }
第一次设置backgroundimage为一张资源时,form初始化信息如下,这时欢迎界面可以正常显示(偷懒自己p了个伪界面):

显示如下:


代码如下:


private void InitializeComponent()
        {
            this.SuspendLayout();
            // 
            // WelcomeForm
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.BackgroundImage = global::MDIMonitor_CS.Properties.Resources.welcome;
            this.ClientSize = new System.Drawing.Size(570, 427);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.Name = "WelcomeForm";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "WelcomeForm";
            this.ResumeLayout(false);

        }

当保持backgroundimage不变,修改backgroundimagelayout为Zoom时,form初始化信息如下,这时欢迎界面不再显示:

没显示就截不了图了:

代码如下:


private void InitializeComponent()
        {
            this.SuspendLayout();
            // 
            // WelcomeForm
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.BackgroundImage = global::MDIMonitor_CS.Properties.Resources.welcome;
            this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
            this.ClientSize = new System.Drawing.Size(589, 426);
            this.DoubleBuffered = true;
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.Name = "WelcomeForm";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "WelcomeForm";
            this.ResumeLayout(false);

        }

当保持backgroundimage不变,再修改backgroundimagelayout回Tile时,form初始化信息如下,这时欢迎界面不再显示:

没显示就截不了图了:

代码如下:


private void InitializeComponent()
        {
            this.SuspendLayout();
            // 
            // WelcomeForm
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.BackgroundImage = global::MDIMonitor_CS.Properties.Resources.welcome;
            this.ClientSize = new System.Drawing.Size(589, 426);
            this.DoubleBuffered = true;
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.Name = "WelcomeForm";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "WelcomeForm";
            this.ResumeLayout(false);

        }


对比以上三个不同内容,很容易看出在改变backgroundimagelayout时,初始化代码中会增加
this.DoubleBuffered = true;
这句话,很明显是打开了双缓冲开关,但是一旦打开了却不再根据backgroundimagelayout的改变为tile而关闭,于是,手动设置
this.DoubleBuffered = false;

这时欢迎界面又正常显示了,卧槽,真的好了,松了口气啊,虽然不能选择backgroundimagelayout为别的选项,但是至少能出来个欢迎了,开心!!显示如下:


就总结了这一问题的出现和解决,这,难道是vs的bug?还是bug中的一个bug?拉倒吧,不求甚解





C# WinForm Panel控件深度解析:从布局原理到性能优化实战 在桌面应用开发中,容器控件是实现界面布局与动态交互的核心组件。其原理在于通过层级化组织子控件,并利用停靠、锚定等机制实现自适应布局,从而提升界面的结构清晰度与可维护性。从技术价值看,合理使用容器不仅能优化视觉分组,更能支撑复杂的动态界面切换与自定义绘制功能,是构建现代化、响应式用户界面的基础。在实际应用场景中,无论是实现经典的上中下三栏布局、可折叠分组框,还是模拟选项卡切换效果,容器控件都扮演着关键角色。本文聚焦于C# WinForm中的Panel控件,深入剖析其核心属性如Dock与AutoScroll,并 阅读详情

相关推荐

C#界面里的winform BackColor和BackgroundImage属性

并且添加上不同的颜色,才能让工人快速地查看到数据异常,接着才能知道设备的异常。通过颜色就可以实现相当友好的界面,下面就来学习窗口的背景颜色和背景图片的使用。BackgroundImage属性是获取或设置在控件中显示的背景图像。特别针对工厂里的用户,因为那些工人都是比较忙,并且都是走动查看和操作,需要修改颜色,可以修改界面的控件的前景颜色,也可以修改控件的背景颜色。软件的界面是比较重要的功能,因为它决定了用户与软件交互的效果,图像在控件的矩形工作区中居中显示。图像在控件的矩形工作区中放大。

大坡3D软件开发 2809

Winform控制添加图片BackGroundImage、Image的区别,本地资源、项目文件资源文件的区别,及Resources资源文件的删除

BackGroundImage与Image的区别

m0_58124947的博客 2266

【愚公系列】2023年10月 Winform控件专题 Button控件详解

Winform控件是Windows Forms中的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、进度条等。开发人员可以使用Winform控件来构建用户界面并响应用户的操作行为,从而创建功能强大的桌面应用程序。Winform中的AutoSizeMode属性可以用来指定控件的自动调整大小模式,即控件的大小是否随窗体的大小而自动调整。GrowOnly:控件的大小会自动调整为最大值,但不会小于其默认大小。

愚公智库 2万+

c# 全屏显示窗体

版权声明:本文为博主原创文章,未经博主允许不得转载。 this.FormBorderStyle 获取或设置边框的样式  this.WindowState 获取或设置窗体的窗体状态 this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;  // 摘要:         //  

newbie的博客 2232

superpowers-中文使用说明

《obra/superpowers:AI辅助开发的流程纪律工具集》 摘要:obra/superpowers是一套面向AI辅助软件开发的系统化流程规范,包含14个核心技能,强调"先理解后行动"的纪律性开发方法。该工具集定义了从头脑风暴到代码评审的完整工作流,要求严格遵循测试驱动开发、子代理隔离执行等原则。核心特色包括:1) 任何实现前必须完成设计和评审;2) 采用红-绿-重构的TDD循环;3) 复杂任务通过独立子代理串行处理;4) 所有产出需经过双重验证(规格合规+代码质量)。该工具集特别注重文档化和可验证性

qq_22786633的博客 765

还在手敲LaTeX公式?用Rime小狼毫打造你的专属数学输入法(附完整配置包)

本文介绍如何利用Rime小狼毫输入法引擎打造专属数学公式输入方案,显著提升LaTeX公式输入效率。通过详细配置教程和智能补全技巧,帮助科研人员和学生实现3-5倍的输入速度提升,特别适合学术写作和技术文档创作场景。

weixin_32520601的博客 282

Winform背景图片添加与图片大小自适应

Winform窗体开发过程中为了使我们的窗体更加美观,有时候可能需要添加背景图片的操作,那如何添加背景图片呢?主要的方法有两种: (1)PictureBox控件 (2)窗体BackGroudImage属性添加 PictureBox顾名思义就是用来存放图片的容器,拖拉一个PictureBox控件到窗体中,接着再为PictureBox控件添加图片绑定就可以实现背景图片的添加,此种添加方法既可用于

ydm东方旭日的专栏 1万+

CTF 命令执行绕过总结

tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示。或:rce-xor-or.php & rce-xor-or.py。# ls -t >shell 将输出输入到shell文件中。异或:rce-xor.php & rce-xor.py。%09(url传递)(cat%09flag.php)sh /flag 2>%261 //报错出文件内容。2、1使用空变量$*和$@,$x,${x}绕过。7、异或无符号(过滤0-9a-zA-Z)more:一页一页的显示档案内容。

jnszstmei的博客 1959

C#中给Label控件设置BackgroundImage属性

在C#中,默认情况下是无法给Label设置BackgroundImage属性的,只有Image这个属性,但是在某些特殊的情况下我们又需要设置Label的BackgroundImage属性,因此我们必须对label控件加以改造。Label是继承自Control类的,而Control类是有BackgroundImage这个属性的,Label也有这个属性,只是在VS中我们无法看到而已,微软做了下处理,不...

hududanyzd 135

Cartographer参数调优指南:如何用Lua配置解决建图漂移问题

本文深入解析Cartographer SLAM系统的Lua参数调优方法,针对建图漂移问题提供完整解决方案。从运动滤波、扫描匹配到多传感器融合,详细讲解关键参数配置技巧,并给出仓库物流和服务机器人等典型场景的优化方案,帮助开发者实现精准建图。

vulkan6gpu的博客 115

Anylabeling与SAM协同:从智能标注到YOLO数据集构建的完整实践

本文详细介绍了Anylabeling与SAM协同标注的完整实践,从智能标注到YOLO数据集构建的全流程。通过结合SAM的自动分割能力和Anylabeling的交互式标注,显著提升标注效率,特别适合小样本、复杂形状和多类别标注场景。文章还提供了环境搭建、标注优化技巧以及YOLO格式转换的实用指南。

weixin_26873711的博客 461

c form属性 winform_WinForm form属性

一、布局Autostroll 控件内容大于可见区域是否自动显示滚动条Maximumsize 窗体可调到最大尺寸minimumsize 窗体可调到最小尺寸size 窗体看到的尺寸StarPosition 窗体位置 -WindowsDefaultLocation 默认的-CenterScreen 根据window屏幕居中-CenterParent 根据父级窗体居中WindowSt...

weixin_39878716的博客 277

LLM 大模型学习必知必会系列(十一):大模型自动评估理论和实战以及大模型评估框架详解

LLM 大模型学习必知必会系列(十一):大模型自动评估理论和实战以及大模型评估框架详解

丨汀、的博客 3216

C# winform PictureBox插入图片并设置自适应显示

1.把提前下载好的图片放置于:项目\bin\Debug\Resources目录下面; 注意:Resources文件夹必须放在bin\Debug文件夹下,否则提示找不到图片! 2.Form.cs中把pictureBox的BackgroundImage设置为需要显示的图片,PictureBox和图片文件名按自己的需要修改,如下:this.pictureBox1.BackgroundImage = I

xiangxianghehe的博客 2万+

机器人在果园内行巡检仿真(2D雷达、realsense相机)

DiffBot是一种具有两个轮子的自主差动驱动机器人。它的主要处理单元是一个运行Ubuntu Mate 20.04和ROS 1 (ROS Noetic)中间件的Raspberry pi4b。该存储库包含ROS驱动包、真实机器人的ROS控制硬件接口和模拟DiffBot的配置。修改配置文件orchard_world.launch。

如果想成为中心,那么就到中心去吧。 1311

使用R语言实现循环神经网络RNN进行文本生成

首先,让我们回顾一下循环神经网络(Recurrent Neural Networks,RNN)的基本概念。RNN是一种深度学习技术,特别适合处理序列数据,如时间序列和文本数据。RNN的关键特性是它的隐藏状态,这个状态可以捕捉到当前输入之前的信息。这使得RNN能够利用前面的信息来影响后续的输出,从而对序列数据进行有效的处理。

斌擎科技 724

用一个变态的方法解决winform闪烁问题

很久没有写东西了,希望各位海涵。。一、问题Winform的程序其实在绘制机制上有较大的性能问题,这个问题本身是由于绘制过程是通过system.drawing里面大量使用pvinvke调用api解决的,由于.net的速度问题这个瓶颈很难解决。下面一个图片显示了为什么在一个mdi窗口显示一个模态窗口会闪烁的问题,同理对于mdi子窗口切换也是一样的。1. 在窗口显示出来之前(shown事件),这些控件的句柄已经创建,但.net运行时还来不及处理paint事件。这个效果大致是这样的:而原始Form是这样的:所以一般

千千编程专栏 5918

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

WinForm Splash的简单实现

WinForm Splash的简单实现 从Form派生一个新类 设置一张图片到BackgroundImage属性。 重写OnPaintBackground 画上版本号 protected override void OnPaintBackground(PaintEvent...

weixin_30251829的博客 245

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

WinForm 第一章:窗体基础(partial类+Form全部属性)+WinForm 窗体常用事件(构造函数+Load+FormClosing)

分部类partial分两端,界面逻辑两分开;初始化方法不能删,所有控件里面载;Text标题Name标识,Icon图标ico来;边框样式控大小,背景四种布局态;资源导入最稳定,窗体属性记心怀。执行顺序阶段执行时机主要作用1构造函数窗体对象刚创建初始化控件、简单赋值2Load事件控件加载完毕,窗口即将显示加载图片、文件、数据、资源3FormClosing事件点击关闭,窗口销毁之前数据提示、资源释放、收尾工作。

2501_91389120的博客 466

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【C#语言】WinForm窗体

BackGroundImage:设置窗体背景图片。窗体的本质是Form类的对象。BackColor:设置窗体背景颜色。MouseClick:鼠标点击事件。Icon:设置窗体左上角图标。Name:设置窗体的标识名。Size:设置窗体的大小。Text:设置窗体的标题。Click:窗体点击事件。Load:窗体加载事件。

文布斯的博客 1070

paip.c#.net自定义图像窗体form

paip.c#.net自定义图像窗体form 作者Attilax ,  EMAIL:1466519819@qq.com 使用图片来做为FORM,更美观 找到BackgroundImage属性,点击打开新的窗口,选择下面的导入资源文件,选择Png/GIF图片。因为这两种图片格式支持透明,也可以使用BMP 如果使用PNG/GIF,backcolor属性必须设置为白色,否

attilax的专栏 2322

WinForm form属性

一、布局 Autostroll 控件内容大于可见区域是否自动显示滚动条 Maximumsize 窗体可调到最大尺寸 minimumsize 窗体可调到最小尺寸 size 窗体看到的尺寸 StarPosition 窗体位置 -WindowsDefaultLocation 默认的 -CenterS...

weixin_30649641的博客 191

Winform Button背景图片只显示部分图片

PS画了一张图作为Button按钮背景图片,添加到项目文件中,BackgroundImage引用后,发现出现只显露右上角一部分的问题 就是上面图片这个样子。 考虑到位图片可能在拉伸的时候出现了问题,然后用AI画了矢量图,导出,导入,引用。。。一波操作猛如虎。 看完效果还是老挫样,招数使完,处于懵逼状态,后来啊,知道一个属性没有调整好。 就是这位大哥 -------------...

an_tang的博客 1760

WinForm界面(一)

一:Form对象 属性: 设计中的Name:窗体类的类名AcceptButton:窗口的确定按钮CancelButton:窗口按ESC的取消按钮 1.外观 Backcolor:背景颜色Forecolor:字体颜色backgroundImage:背景图片Font:设置字体Formborderstyle:边框样式,常用Fixedsingle固定,sizeable可调Text:标题栏文...

dianqie9126的博客 318

C# Winform控件 - Form

一、Form窗体样式 1.FormBorderStyle (1)None (2)FixedSingle (3)Fixed3D 个人感觉跟Fixedsingle区别不大 (4)FixedDialog 不可以通过鼠标来拖拉窗体的边框来调节大小 (5)Sizable 可以通过鼠标来拖拉窗体的边框来调节大小 (6)FixedToolWindow 不可以通过鼠标来拖...

weixin_34194702的博客 251
上一篇: .net下正态分布或高斯分布概率查表函数
下一篇: MFC下dll的创建与使用
成田日上
博客等级 码龄11年 96粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值