调整大小后,控件在空气动力学玻璃上模糊



我正在使用航空玻璃作为背景构建一个表单,如我在"Windows Aero Glass 背景在休眠后损坏。我该如何解决这个问题?窗口已设置ResizeMode="NoResize" SizeToContent="WidthAndHeight"

有一个 Grid,其中包含一些固定列和一个带有元素的变量列。此元素设置为可见并折叠。我的窗口应该自己扩展和收缩,什么工作得很好。

我的问题是,在重新调整后,所有控件在每个维度上都会模糊约 1 个像素。通过切换元素来重新生成先前的大小后,此模糊会消失。我已经知道,每次窗口都会以编程方式调整大小时出现。如果用户调整大小,只需拖动角(当然没有ResizeMode="NoResize"),控件即可保持清晰。

SnapsToDevicePixels="True"似乎对这种行为没有影响。

如果禁用空气动力学玻璃,一切正常并保持清晰。

我期待收到您的建议。

提前谢谢你。

编辑:

例:

XAML:

<Window x:Class="glass_sample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="SampleWindow"
        ResizeMode="NoResize"
        SizeToContent="WidthAndHeight"
        Loaded="Window_Loaded"
        Background="{StaticResource {x:Static SystemColors.ActiveCaptionBrushKey}}">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="80" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="200" />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Button  Content="Toggle"
                 Click="Button_Click" />
        <Button  IsEnabled="False"
                 Grid.Column="1"
                 Margin="5"
                 Content="Expanded"
                 Visibility="Collapsed"
                 Name="expand" />
    </Grid>
</Window>

.CS:

public MainWindow()
{
    InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
    this.expand.Visibility = (this.expand.Visibility == System.Windows.Visibility.Visible) ? System.Windows.Visibility.Collapsed : System.Windows.Visibility.Visible;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
    GlassHelper.GlassFrame(this);
    // this is my aero-glass class. It extends glass over clientarea and repeats
    // this when WM_THEMECHANGED or WM_DWMCOMPOSITIONCHANGED is recieved.
}
在以

编程方式调整窗口或控件大小后,可以使用 Invalidate() 方法重绘窗口或控件...可能覆盖调整大小的方法会使其更容易。

相关内容

  • 没有找到相关文章

最新更新