Grid背景图片平铺,谁弄过了的,给点建议?

Joetao 2010-07-13 08:07:47
如题!项目中碰到将Grid背景图片平铺的问题!原本以为很简单,试了下,好像都行不通!在网上查了下,好像说Grid还不支持平铺!
不知道是不是真的!有谁弄过了的给点建议!
想了一个办法是在服务器端的*.html页面,中body中设置图片的平铺样式!不过觉得这种方法好别扭!
希望能给出好的办法!
...全文
1220 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxdtlqgyp33 2012-08-04
  • 打赏
  • 举报
回复
真的就没有办法解决了吗?只能用ps先拼起来然后再用?
xhma44 2012-01-26
  • 打赏
  • 举报
回复
看来没办法了?!
Sunpire 2010-07-15
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 jv9 的回复:]
原来这样,我看了一些资料,貌似不支持平铺的效果。2楼的方法楼主试过了么?[/Quote]

感觉2楼的方法还不如LZ的同事用的把背景图拼出平铺的效果来得容易,哈
jv9 2010-07-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sunpire 的回复:]
冷大神, Fill 的效果只是拉伸, 平铺应是 Tiled , 比如用 宽度为1px,高为20px 的图片作为 宽100高20的区域的背景,平铺的效果就相当于用100张相同的图片水平的连续放置在这个区域中,这在Html网页中很常见。
第一次见“平铺”这个词是在Windows98的桌面属性的对话框中,经典啊。
[/Quote]

原来这样,我看了一些资料,貌似不支持平铺的效果。2楼的方法楼主试过了么?
Joetao 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ylly2508 的回复:]
ImageBrush可以实现平铺~
<ImageBrush ImageSource="close.jpg" TileMode="Tile" Viewport="0,0,0.5,0.5" ></ImageBrush>

就是imageBrush从坐标(0,0)到(0.5,0.5)实现平铺4张图,因为坐标从(0,0)到(1,1)是全屏,所以到0.5是一半,就显示4张图片,如果Viewport设置……
[/Quote]
按这个查了下,找到一篇文章!貌似WPF中才有这个 TileMode="Tile"。不过我把ImageBrush放在Rectangle就可以实现平铺!
[

<Rectangle Grid.Row="1">
<Rectangle.Fill>
<ImageBrush ImageSource="/ScoreManagement;component/Images/background.jpg" />
</Rectangle.Fill>
</Rectangle>


但未找到TileMode这个属性!像这篇文章所说的http://www.cnblogs.com/DragonInSea/archive/2009/06/23/1509406.html
Sunpire 2010-07-14
  • 打赏
  • 举报
回复
冷大神, Fill 的效果只是拉伸, 平铺应是 Tiled , 比如用 宽度为1px,高为20px 的图片作为 宽100高20的区域的背景,平铺的效果就相当于用100张相同的图片水平的连续放置在这个区域中,这在Html网页中很常见。
第一次见“平铺”这个词是在Windows98的桌面属性的对话框中,经典啊。
Sunpire 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ylly2508 的回复:]
ImageBrush可以实现平铺~
<ImageBrush ImageSource="close.jpg" TileMode="Tile" Viewport="0,0,0.5,0.5" ></ImageBrush>

就是imageBrush从坐标(0,0)到(0.5,0.5)实现平铺4张图,因为坐标从(0,0)到(1,1)是全屏,所以到0.5是一半,就显示4张图片,如果Viewport设置……
[/Quote]
你用的是什么ImageBrush? 是 Deep Zoom 的?我怎么没查到有 TileMode 这个属性
jv9 2010-07-14
  • 打赏
  • 举报
回复
<Grid.Background>
<ImageBrush Stretch="Fill" ImageSource="featured_post.jpg"/>
</Grid.Background>

这个平铺效果不行么?还是我理解错了。
Sunpire 2010-07-14
  • 打赏
  • 举报
回复
WPF 的 ImageBrush 同时有 Stretch 和 TileMode 两个属性,并且
TileMode = None、FlipX 、FlipY 、FlipXY 、Tile ,

再次说明了Silverlight 只是WPF的一个子集,感叹一下
ylly2508 2010-07-14
  • 打赏
  • 举报
回复
ImageBrush可以实现平铺~
<ImageBrush ImageSource="close.jpg" TileMode="Tile" Viewport="0,0,0.5,0.5" ></ImageBrush>

就是imageBrush从坐标(0,0)到(0.5,0.5)实现平铺4张图,因为坐标从(0,0)到(1,1)是全屏,所以到0.5是一半,就显示4张图片,如果Viewport设置成"0,0,0.1,0.1",那么横向纵向就显示10张图片平铺
ylly2508 2010-07-14
  • 打赏
  • 举报
回复
额...平铺啊~~看错了~~~ —.—!
ylly2508 2010-07-14
  • 打赏
  • 举报
回复
可以平铺的~~
比如在grid中放一个image~要设置image的一些属性~~


image.VerticalAlignment = VerticalAlignment.Stretch;//设置纵向拉伸
image.HorizontalAlignment = HorizontalAlignment.Stretch;//设置横向拉伸
image.Margin = new Thickness( 0 );//设置image与父类容器的外边距为0

不用设置image的宽和高,那样image就不能拉伸了~
Joetao 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jv9 的回复:]
<Grid.Background>
<ImageBrush Stretch="Fill" ImageSource="featured_post.jpg"/>
</Grid.Background>

这个平铺效果不行么?还是我理解错了。
[/Quote]
这个我试了的!这个只是拉伸!我要实现的是,只用一张小图!软后背景可以出现很多个这样小图拼接成的背景!
在html中用css,设置其repeate就可以了.repeate-x 横向平铺 ,repeate-y 纵向平铺,repeate 横向纵向平铺!但不知道Grid有没有这样的功能!
老Key 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sunpire 的回复:]
冷大神, Fill 的效果只是拉伸, 平铺应是 Tiled , 比如用 宽度为1px,高为20px 的图片作为 宽100高20的区域的背景,平铺的效果就相当于用100张相同的图片水平的连续放置在这个区域中,这在Html网页中很常见。
第一次见“平铺”这个词是在Windows98的桌面属性的对话框中,经典啊。
[/Quote]呵呵。。。sunpire不要总欺负冷大神啊。。呵呵。。
ylly2508 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sunpire 的回复:]
引用 11 楼 ylly2508 的回复:
貌似WPF中才有这个 TileMode="Tile"。不过我把ImageBrush放在Rectangle就可以实现平铺!
[/Quote]

呵呵~~以为差不多呢~~~
ylly2508 2010-07-14
  • 打赏
  • 举报
回复
呵呵~~我用的是WPF~~~
ylly2508 2010-07-14
  • 打赏
  • 举报
回复
可以实现啊~~
一下源码~

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

x:Class="平铺.MainWindow"
x:Name="Window"
Title="MainWindow" WindowState="Maximized" WindowStyle="None">

<Window.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVis" />
<Storyboard x:Key="Storyboard1"/>
</Window.Resources>
<Window.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Storyboard="{StaticResource Storyboard1}"/>
</EventTrigger>
</Window.Triggers>

<Grid x:Name="LayoutRoot">
<Grid x:Name="root" IsHitTestVisible="False"
Visibility="{Binding IsChecked, Converter={StaticResource BoolToVis}, ElementName=checkEnableMagnifier}" Margin="0">

<Rectangle x:Name="rect" Margin="0" >
<Rectangle.Fill>
<ImageBrush ImageSource="close.jpg" TileMode="Tile" Viewport="0,0,0.1,0.1" ></ImageBrush>
</Rectangle.Fill>
</Rectangle>
</Grid>

</Grid>
</Window>
Joetao 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 sunpire 的回复:]
引用 14 楼 joetao 的回复:
引用 13 楼 joetao 的回复:
这样不行!哎!白高兴了一场!开始以为可……


我说呢,我在2楼就试过 Rectangle + ImageBrush 的,搞到我都怀疑我测错了
[/Quote]
呵呵!难为你了啊!
Sunpire 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 joetao 的回复:]
引用 13 楼 joetao 的回复:
这样不行!哎!白高兴了一场!开始以为可……
[/Quote]

我说呢,我在2楼就试过 Rectangle + ImageBrush 的,搞到我都怀疑我测错了
Joetao 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 joetao 的回复:]
<Rectangle Grid.Row="1">
<Rectangle.Fill>
<ImageBrush ImageSource="/ScoreManagement;component/Images/background.jpg" />
</Rectangle.Fill>
</Rectangle>
[/Quote]

这样不行!哎!白高兴了一场!开始以为可以(没想到。同事把底图换了!把小图用photoshop拼接成了一个大图)。估计没TileMode属性设置是不行的!
加载更多回复(4)

8,755

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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