gpt4 book ai didi

wpf - 使用缩放变换时的边框保持比例

转载 作者:行者123 更新时间:2023-12-04 06:28:24 25 4
gpt4 key购买 nike

我可能梦想过它,但我记得我在某处读到可以使用缩放变换来更改边框的大小,并且有一个属性可以将边框宽度保持为使用缩放之前的宽度(我可能梦想的是这个属性,而不是比例变换 =P)。

所以,通常情况下,如果我有一个 BorderWidth 为 1 的边框,并且我缩放它以使其更大,那么 BorderWidth 看起来就像是 10 或其他东西。我希望控件本身更大,但它的边框保持 1 像素的宽度。

有人知道怎么做吗?

谢谢!

最佳答案

当然,只需 layout-transform 将零宽度边框缩放到您喜欢的任何大小并将其包裹在一个像素宽度的边框中。

<Grid>
<Border BorderThickness="1" BorderBrush="Black" HorizontalAlignment="Left" VerticalAlignment="Top">
<Border Height="100" Width="100">
<Border.LayoutTransform>
<ScaleTransform ScaleX="2" ScaleY="2"/>
</Border.LayoutTransform>
<TextBlock Text="Some text"/>
</Border>
</Border>
</Grid>

编辑:

好的,当缩放从外部进入时,取两个。

这是一个小标记演示, Canvas 被转换并包含边框:
<Grid>
<Grid.Resources>
<local:DescalingConverter x:Key="descalingConverter"/>
</Grid.Resources>
<Canvas Name="canvas">
<Canvas.LayoutTransform>
<ScaleTransform ScaleX="2" ScaleY="2"/>
</Canvas.LayoutTransform>
<Border BorderThickness="{Binding ElementName=canvas, Converter={StaticResource descalingConverter}}"
BorderBrush="Black" Width="100" Height="100">
<TextBlock Text="Some text"/>
</Border>
</Canvas>
</Grid>

这是除垢转换器:
public class DescalingConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var element = value as FrameworkElement;
var transform = element.LayoutTransform as ScaleTransform;
if (transform == null) return 1.0;
return 1.0 / transform.ScaleX;
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}

请注意,转换器并不稳健,仅用于演示目的。

关于wpf - 使用缩放变换时的边框保持比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5750394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com