C#WPF将图像控件锚定为仅水平缩放

C#WPF将图像控件锚定为仅水平缩放,c#,wpf,image,width,anchor,C#,Wpf,Image,Width,Anchor,我在使用图像控件时遇到问题。我想将图像固定在窗口顶部,高度为9,每当我调整窗口大小时,图像将缩小/增大,但仅在水平方向上。我之所以只想水平缩放它,是因为图像应该是不透明的形状,为窗口提供了一点样式,但是.png的尺寸是24x9,所以我想将图像缩放到544x9,或者任何宽度值 我的问题是,我如何做到不失去任何质量 代码如下: <ui:LauncherWindow x:Class="WpfApplication1.Window1" xmlns="http://schemas.m

我在使用图像控件时遇到问题。我想将图像固定在窗口顶部,高度为9,每当我调整窗口大小时,图像将缩小/增大,但仅在水平方向上。我之所以只想水平缩放它,是因为图像应该是不透明的形状,为窗口提供了一点样式,但是.png的尺寸是24x9,所以我想将图像缩放到544x9,或者任何宽度值

我的问题是,我如何做到不失去任何质量

代码如下:

<ui:LauncherWindow x:Class="WpfApplication1.Window1"
        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"
        xmlns:local="clr-namespace:WpfApplication1"
        xmlns:ui="clr-namespace:LauncherUI;assembly=LauncherUI"
        mc:Ignorable="d"
        Title="Window1" WindowStartupLocation="CenterScreen" Height="800" Width="1400" MinWidth="700">
    <Grid>
        <DockPanel VerticalAlignment="Top" Height="8">
            <Button Margin="95,0,95,0">
                <Button.Style>
                    <Style TargetType="{x:Type Button}">
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type Button}">
                                    <Border>
                                        <TextBlock>
                                            <TextBlock.Background>
                                                <ImageBrush ImageSource="border_topbar.png" RenderOptions.BitmapScalingMode="HighQuality" RenderOptions.EdgeMode="Aliased"/>
                                            </TextBlock.Background>
                                        </TextBlock>
                                    </Border>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </Button.Style>
            </Button>
        </DockPanel>
    </Grid>
</ui:LauncherWindow>


“不丢失任何质量”?你能更具体地说明你所说的质量是什么意思吗?如果您开始使用14x9 PNG,从左到右只有14个像素。如果你试图拉伸这14个像素来填充1400个像素,它将不得不进行插值。好吧,只是形状是一个梯形,梯形的上边总是比梯形的下边长,但是当调整窗口大小时,它会不断增加,从而产生模糊。也就是所谓的“插值”。尝试用矢量图形替换图像:
例如。不需要插值就可以拉伸。你必须让你的文本块透明,然后把它放在后面,叠加在一个网格或某物中。如果一个矢量图形不能做这个工作(不知道你的图像看起来像什么,我不能确定),考虑一下一个像你所需要的那样宽的图像,让UI缩小它。你不能添加从未出现过的像素,但你可以随心所欲地扔掉旧像素。“而不会失去任何质量”?你能更具体地说明你所说的质量是什么意思吗?如果您开始使用14x9 PNG,从左到右只有14个像素。如果你试图拉伸这14个像素来填充1400个像素,它将不得不进行插值。好吧,只是形状是一个梯形,梯形的上边总是比梯形的下边长,但是当调整窗口大小时,它会不断增加,从而产生模糊。也就是所谓的“插值”。尝试用矢量图形替换图像:
例如。不需要插值就可以拉伸。你必须让你的文本块透明,然后把它放在后面,叠加在一个网格或某物中。如果一个矢量图形不能做这个工作(不知道你的图像看起来像什么,我不能确定),考虑一下一个像你所需要的那样宽的图像,让UI缩小它。你不能添加从未出现过的像素,但你可以随意丢弃旧像素。