我可以将StretchDirection添加到VisualBrush吗?

时间:2018-03-22 22:02:51

标签: c# wpf

是否可以将属性StretchDirection添加到VisualBrush?我的VisualBrush包含一个媒体元素,media元素具有此属性,但不包含VisualBrush。当我将StretchDirection属性应用于此MediaElement时,它将被忽略。我猜是因为VisualBrush覆盖了它的属性。

public void run() {
    for (Job job = jobStack.pop(); job != null; job = jobStack.pop()) {
        try
        {
            System.out.println ("Worker " + id +" started job  ");
            job.doJob();   
            System.out.println("Worker " + id + " started job " + job.getId());
        }
        catch (Exception e)
        {            
            System.out.println ("Exception is caught");
        }
     }
   }
  }

1 个答案:

答案 0 :(得分:1)

VisualBrush获取VisualBrush.Visual的所有内容,并将其用作Brush。因此,假设您将Stretch="None"Image一起使用,其大小为10000x10000,并将此VisualBrush设置为Background的{​​{1}}。喜欢这段代码:

Window

您可能希望,此图片的一小部分只能呈现,但不会,因为<Window x:Class="WpfApplication3.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="ListViewBasicSample" Height="500" Width="500"> <Grid> <Grid.Background> <VisualBrush TileMode="None" AlignmentX="Center" Stretch="Fill" AlignmentY="Center" > <VisualBrush.Visual> <Grid Background="red"> <Image Source="wp2444179.jpg" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="None" Margin="100" Height="10000" /> </Grid> </VisualBrush.Visual> </VisualBrush> </Grid.Background> </Grid> </Window> 的所有内容都被视为VisualBrush.Visual。结果如下:

enter image description here

在这种情况下,VisualBrush属性没有地方。您可以使用Stretchmarginpadding进行一些小的调整这里。可能会为TileMode添加Container(例如Grid),并为此MediaElement定义WidthHeight

<强> TL;博士; 您询问是否可以在VisualBrush上使用Stretch - 可以使用它,并且正确考虑它,如示例代码中所示。问题出在Container上。在那里使用这个属性几乎没有意义,因为所有渲染的VisualBrush.Visual都被用作Brush。 我想说,你伸展的越多,刷子的用量越多:)