silverlight 绘制PATH背景为图片

changmaohai1980 2009-08-29 11:23:19
silverlight 绘制PATH背景为图片.
例如鼠标绘制了一条曲线.这条曲线背景就是我指定的背景图.
...全文
392 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jv9 2009-09-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 changmaohai1980 的回复:]
呵呵..我现在也是做一个大的小草密布的图片来绘制的.但是我个人觉得不是很理想,觉得灵活性不高.
希望能有人解决这个问题.
[/Quote]

我也是用的这种方法。
changmaohai1980 2009-09-03
  • 打赏
  • 举报
回复
呵呵..我现在也是做一个大的小草密布的图片来绘制的.但是我个人觉得不是很理想,觉得灵活性不高.
希望能有人解决这个问题.
xingjunli 2009-09-03
  • 打赏
  • 举报
回复
stroke用来获取或设置指定 Shape 轮廓(边框)绘制方式的 Brush。
建议做一个大的小草密布的图片,转换为ImageBrush
 <UserControl x:Class="Silverlight.GridLayout"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300">
<UserControl.Resources>
<ImageBrush x:Key="bgBrush" ImageSource="Themes/images/1225414TH-3.jpg"/>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="Snow">
<StackPanel x:Name="dddd">
</StackPanel>
<Canvas x:Name="BGCanvas">
<Canvas.Resources>
<ImageBrush x:Key="imgBG" ImageSource="Themes/images/11324193B2-1.jpg" />
</Canvas.Resources>
</Canvas>
<Path x:Name="pathLine" Fill="White" Stretch="Fill" Margin="60,115,83,121" Data="M0.5,0.5 L87.951172,-88.749992 L118.26758,-39.749996 L199.5,0.5 L199.5,21.5 L117.49023,-18.749996 L88.728516,-67.749992 L0.5,21.5 z" UseLayoutRounding="False" StrokeThickness="20">
</Path>
</Grid>
</UserControl>

后台调用
 pathLine.Stroke = this.Resources["bgBrush"] as ImageBrush;
changmaohai1980 2009-09-03
  • 打赏
  • 举报
回复
这代码我常识放在绘制的曲线里是可以显示图片了,,但是并没有填充我所绘制的曲线的背景.
通常我们填充背景都是使用Stroke这个属性来填充颜色的.
请问有没有好的办法?
jv9 2009-09-02
  • 打赏
  • 举报
回复
不是很明白你的问题。能详细说说么。
xingjunli 2009-09-02
  • 打赏
  • 举报
回复
1、将图片定义为资源如:
<ImageBrush x:Key="ManBGLeft" ImageSource="Images\bg_Left.png" />
2、绘制Path时取得Path区域坐标信息:
3、根据区域坐标信息动态创建Rectangle 填充背景,完整代码:
      <Canvas x:Name="BGCanvas">
<Canvas.Resources>
<ImageBrush x:Key="imgBG" ImageSource="Themes/images/11324193B2-1.jpg" />
</Canvas.Resources>
</Canvas>
        /// <summary>
/// 为指定区域填充背景图
/// </summary>
/// <param name="canvasP">容器起点坐标</param>
/// <param name="cWidth">容器宽度</param>
/// <param name="cHeight">容器高度</param>
/// <param name="imgWidth">背景图宽度</param>
/// <param name="imgHeight">背景图高度</param>
void SetBGCanvas(Point canvasP,double cWidth,double cHeight,double imgWidth,double imgHeight)
{
Rectangle rect;
int x = (int)cWidth / (int)imgWidth + 1;
int y = (int)cHeight / (int)imgHeight + 1;
for (int i = 0; i < y; i++)
{
for (int j = 0; j < x; j++)
{
rect = new Rectangle();
rect.SetValue(Rectangle.WidthProperty,imgWidth);
rect.SetValue(Rectangle.HeightProperty,imgHeight);
rect.Fill = BGCanvas.Resources["imgBG"] as ImageBrush;
BGCanvas.Children.Add(rect);
Canvas.SetLeft(rect,canvasP.X + j * imgWidth);
Canvas.SetTop(rect, canvasP.Y + i * imgHeight);
}
}

}
junyi2003 2009-09-02
  • 打赏
  • 举报
回复
WriteableBitmap wb = new WriteableBitmap(yourPathElement, null);
yourImageBrush.ImageSouces = wb;

不知道这样可行伐?不过你Path更新的时候,你要重复赋值的,做个事件就行。
changmaohai1980 2009-09-02
  • 打赏
  • 举报
回复
例如:我有一张很小的小草的图片,当我用鼠标绘制线的时候,
小草会变的无数棵小草,填充绘制的线的背景.

请问该如何做呢?
zhuzhi 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xingjunli 的回复:]
没太理解,将曲线绘制在Canvas上,设置Canvas的Zindex就可以
[/Quote]

这样可以,或者将绘制的背景图作为ImageSource的值来设置背景。
wormwormwormworm 2009-08-29
  • 打赏
  • 举报
回复
mark
xingjunli 2009-08-29
  • 打赏
  • 举报
回复
没太理解,将曲线绘制在Canvas上,设置Canvas的Zindex就可以

8,757

社区成员

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

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