控件(如panel等)的背景图片如何做到拉伸呢?(默认是平铺的)

lovvver 2005-07-22 10:24:36
窗体的背景图片拉伸可以做到,我采用同样的方法对控件操作,可是不行。
对于控件的背景图片的拉伸怎么做呢,各位兄弟,指点指点。
...全文
1366 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
大可山人 2006-01-17
  • 打赏
  • 举报
回复
需要自定义绘制:
yourForm_OnLoad(...)
{
Bitmap m_Bitmap = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height);
Graphics g = Graphics.FromImage(m_Bitmap);
g.DrawImage(yourImage, this.ClientRectangle, new Rectangle(0, 0, yourImage.Width, yourImage.Height), GraphicsUnit.Pixel);
}

yourControl_OnPaint(...)
{
Graphics g = yourControl.CreateGraphics();
g.DrawImage(m_Bitmap);
g.Dispose();
}
北流流 2006-01-10
  • 打赏
  • 举报
回复
re:Jim3(Jim)
不行啊 ,兄弟,我试了没反应,我是设置backgroundimage的拉伸还是平铺的,不好看啊



====PEKINGLIU====
quanyi 2006-01-10
  • 打赏
  • 举报
回复
收藏
seekg 2005-12-27
  • 打赏
  • 举报
回复
旁听
lovvver 2005-07-28
  • 打赏
  • 举报
回复
多谢楼上老兄~!
Jim3 2005-07-28
  • 打赏
  • 举报
回复
背景图是如何画出来的?你可以用Reflector看一下
在Control的方法:
internal void PaintBackground(PaintEventArgs e, Rectangle rectangle)
中有这么一段:

TextureBrush brush1 = new TextureBrush(this.BackgroundImage, WrapMode.Tile);
try
{
Matrix matrix1 = brush1.Transform;
matrix1.Translate((float) this.DisplayRectangle.X, (float) this.DisplayRectangle.Y);
brush1.Transform = matrix1;
e.Graphics.FillRectangle(brush1, rectangle);
return;
}
finally
{
brush1.Dispose();
}

其中WrapMode决定了画的方式,不过没有拉伸这个选项

所以你必须自己处理,重写OnPaint,或者响应Paint事件
直接用Graphics.DrawImage画就可以了
protected override void OnPaint(PaintEventArgs pe)
{
if (this.image != null)
{
pe.Graphics.DrawImage(this.image, this.Rectangle);
}
base.OnPaint(pe);
}



lovvver 2005-07-28
  • 打赏
  • 举报
回复
处理图片和背景图片两回事吧,
除非在控件里添加处理图片这一部分,如某一控件设置其backgroundimage时,自动对该图片处理成拉伸显示在控件上,
否则没用。

如果这样的话,那就要改动控件了,这肯定不是好方法。

请问高手们~对于这个问题有什么好一点的方法呢?
qiezic 2005-07-27
  • 打赏
  • 举报
回复
c#有处理图片功能,如果窗体大小发生变化时跟着处理图片的尺寸如何
gaochundu 2005-07-27
  • 打赏
  • 举报
回复
晕 试了下 连窗体的背景图的拉伸都没搞定 楼主有空说下怎么做 大家一起试
关注……
lovvver 2005-07-27
  • 打赏
  • 举报
回复
有些帖子一贴出来,都争着回答。
为什么有的帖子贴出来却少人问津呢?
问题太难?还是分太少???
分不是问题。
谁能帮我解决,我500分都给他也可以。
lovvver 2005-07-27
  • 打赏
  • 举报
回复
backgroundimage属性大部分的控件都是有的,
如果我的控件较大,而图片太小,那显示出来不是很难看吗?
如果做到拉伸图片显示呢?那就好了。
如果能做到这一点,还可以不用考虑显示器的分辨率啊字体大小啊所带来的影响了。

那些高手都跑哪去啦???那些星星呢?
出来帮帮忙好吗?
qiezic 2005-07-26
  • 打赏
  • 举报
回复
picturebox可以拉伸,panel就不清楚了
panel有image属性吗,如果有你拉到这里面试试
ranzige 2005-07-26
  • 打赏
  • 举报
回复
关注!
帮你顶,我也想知道这个问题

================================================================
此帖通过csdn小助手回复。小助手只加载最核心数据显示更快流量更小。
下载地址:http://qqwwee.com/csdn.rar
这个软件真的很好,推荐大家使用!也可以给我发邮件
ranzige@163.com 声明我和作者素不相识。
================================================================
lovvver 2005-07-26
  • 打赏
  • 举报
回复
谢谢楼上,可有高手,过来指点一下~
oop80 2005-07-25
  • 打赏
  • 举报
回复
override paint method
lovvver 2005-07-25
  • 打赏
  • 举报
回复
style属性不行,还有哪位老兄能够给点建议啊~~
Student02370236 2005-07-22
  • 打赏
  • 举报
回复
试试用Style属性
lovvver 2005-07-22
  • 打赏
  • 举报
回复
兄弟们帮帮忙啊~
帮顶也行啊~
Access 通用系统1.0 使用说明文档 作者:红尘如烟 下载后请按住shift键不放,在双击打开数据库文件,打开了后在放shift键,可以看设计状态源代码.. 后台数据库密码:admin 前台用户名:admin 密码:admin 仅作为同所有access爱好者参考学习与讨论共同进步用。 此源码软件为2007格式,您需要安装2007或者2010版本的access才能使用,如果您没有安装2007或者2010软件请见下面链接下载安装。 说明: 1、修复了红尘如烟老师的通用系统1.1版本中的数据备份与还原在access2007中无法使用的情况。 2、主界面进行了修改,添加了重新登录和退出按钮。 3、修复了通用系统中的权限中的部分小问题;另增加了一个窗体控件权限的管理和分配。 4、该小系统是一个大杂烩,很多功能都是从许多高手和大师哪里给借鉴来的,thanks。 功能介绍: 1、工资录入以及录入之后修改,可进行自动计算实际应发工资;在录入修改中,修改其中几种,可实现动态更新应发合计;工龄工资、应纳税、个人社会保险等自动计算。 2、人事变动的过程记录,同时可根据变动的类型,更新人事档案中的工资级别,转正日期,职位等信息。 3、人事档案中的头像照片,保存在文件夹中,减少data数据库的存储空间。 4、导入导出,备份还原,权限分组控制,窗体中某些功能限制等 5、组合查询,且可导出查询的任意结果,以及打印任意查询结果;报表也可以一个月单据进行批量打印。 本程序集成了Access程序开发中的一些常用功能模块,适合于有一定基础的初学者或者想减少开发时间的人,可以让你省去开发这些功能的时间。目前是最初版本,只能算是一个大体上的粗坏,而且没有经过详细测试,我只不过是换了几台电脑运行使用了一下而已。不过我开发的时候完全是使用Access本身的功能实现的,没有使用任何的第三方控件,甚至连多余的引用都没有,只要你用的是Access 2003简体中文版本就应该没有太大问题,而且我测试的时候还使用过中文操作系统、英文Access的环境,运行也没有出现问题。 本程序完全免费,而且开放源码,你可以随意使用和修改,就当是免费而且没有食品安全问题的午餐了。大家在使用的时候能给我保留一些版权信息我就很满意了,不过你要是将程序里面的版权信息完全删除我也没有办法,总不至于找你真人PK吧?哈哈,开个玩笑。 如何将本程序集成到你做的系统: 本程序使用的是前后台的模式,所以需要两个mdb文件,一个做为前台,一个做为后台。 第一步,将本程序和你做的系统合并:将两者的表导入合并到同一个mdb文件,其它对象导入合并到另一个mdb文件。(注:本程序用到的表的表名使用了特殊前缀USys,默认情况下Access会当做系统对象隐藏,要显示并查看请打开任意一个mdb文件,然后点击菜单-工具-选项-视图-显示系统对象。) 第二步,修改链接表定义:本程序使用的链接方法不是刷新链接表,而是在启动时自动创建链接表,在退出时链接表会被删除,所以需要定义链接表。本程序中的链接表定义是写在代码中的,请打开模块modLinkData,然后找到第二个函数LinkData,在如下图所示的地方进行修改: 一共需要修改3处地方,一是表数量,二是要链接的源表名称,这些表名保存在数组变量gstrSourceTableName中,其中1-8为本程序用到的表,建议不要修改,从9开始添加你设计的表,下面的数组变量gstrLinkTableName为要创建的链接表的名称,这个为可选,如果需要创建链接表不和实际上的源表名称相同时才用到。 需要注意的问题:源表名数组变量标号必须从1开始且为连续的,且必须保证源表名的正确,只要有任意一个链接表不能被创建,都将被视为无法正确连接后台数据库,从而不能登录。 此处的后台数据库文件可以为任意名称,扩展名也可以任意修改,登录时如果和设定的后台数据库不一致,系统会自动查找前台所在的目录,只要能够找到上面定义的所有源表,就可以自动将此文件设为后台数据库(此处会提示确认,主要是防止出现多个一样的文件,比如将备份文件放在了该文件夹)。 第三步,修改相关设置。进行了以上两步操作就可以正常登录了,这一步要做的就是以初始用户身份登录,打开系统设置,对一些需要修改的地方进行设置,如应用程序名称等,修改完毕后点击确定保存。再打开菜单及面板管理,通过菜单编辑器把你做的内容加入到菜单中。 通过以上简单的几步,我们就可以正常使用集成后的系统了。 其它功能上的说明我考虑加入到程序中,而不是使用单独的文档说明。也不知道为什么,我就是不喜欢应用软件中一大堆乱七八糟的文件,可能这正是我喜欢Access的重要原因:有时候一个文件就能实现全部功能,实在是看着舒坦啊。 另外可以在程序文件夹中放置相应名称的图片即可替

110,566

社区成员

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

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

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