首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调整大小后,控件在航空玻璃上变得模糊

调整大小后,控件在航空玻璃上变得模糊
EN

Stack Overflow用户
提问于 2011-05-12 05:48:53
回答 1查看 516关注 0票数 1

我正在构建一个使用航空玻璃作为背景的表单,正如我在"Windows Aero Glass background is broken after hibernate. How can I solve this?“中所描述的那样。该窗口设置了ResizeMode="NoResize" SizeToContent="WidthAndHeight"

有一个Grid,它有一些固定的列和一个带有元素的可变列。此元素设置为可见并折叠。我的窗口应该自行扩展和收缩,这样才能完美地工作。

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

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

如果Aero Glass被禁用,一切都会完美地工作,并保持清晰。

我期待着收到你的建议。

提前谢谢你。

编辑:

示例:

XAML:

代码语言:javascript
复制
<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>

政务司司长:

代码语言:javascript
复制
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.
}
EN

回答 1

Stack Overflow用户

发布于 2011-05-12 22:21:51

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5971034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档