Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Don';t缩放图像笔刷,在调整大小时,重复此操作!_C#_Wpf_Resize_Scale_Imagebrush - Fatal编程技术网

C# Don';t缩放图像笔刷,在调整大小时,重复此操作!

C# Don';t缩放图像笔刷,在调整大小时,重复此操作!,c#,wpf,resize,scale,imagebrush,C#,Wpf,Resize,Scale,Imagebrush,我对ImageBrush有问题: <Window ... > <Grid> <Grid.Background> <ImageBrush ImageSource="Controls\Images\notebook_paper_Line.jpg" TileMode="FlipX" Viewport="0,0,1,0.09" /> </G

我对
ImageBrush
有问题:

<Window ... >
    <Grid>
        <Grid.Background>
            <ImageBrush ImageSource="Controls\Images\notebook_paper_Line.jpg" TileMode="FlipX"
                        Viewport="0,0,1,0.09" />
        </Grid.Background>        
    </Grid>
</Window>

我想在用户调整窗口大小时重复图像。但当前图像在用户调整窗口大小时会缩放。(请注意,图像大小很小,我使用
TileMode
Viewport
重复它,在调整大小时会出现问题!)

任何XAML代码都会很棒!:)


我为糟糕的英语感到抱歉

默认情况下,TileBrush的视口为0,0,1,1,并且视口单位与BoundingBox相对,这意味着0,0,1,1映射到整个目标大小(在本例中为栅格的边界)

因此,如果要平铺ImageBrush,则需要调整视口。如果要将视口设置为0,0、.5、.5,则应看到平铺为2x2的图像(因为每个平铺的大小为栅格大小的50%x50%),或者0,0,0.25,0.1将生成4x10平铺,等等

但是,这仍然不能阻止图像重新缩放。因此,在您的情况下,您可能需要将视口设置为图像的大小,并将ViewportUnits设置为绝对值,而不是RelativeToBoundingBox

在下面的xaml中,我有一个24x24像素的图像,因此我相应地设置了视口。这会重复平铺图像以获得栅格的完整大小。如果调整网格的大小,将显示更多的平铺

<ImageBrush ImageSource="Images\book_green.png" TileMode="FlipX" 
            Viewport="0,0,24,24" ViewportUnits="Absolute" />


我希望这会有帮助。

是的!这正是我想要的,谢谢!:)