代码之家  ›  专栏  ›  技术社区  ›  Karim Agha

WPF效果和视频卡问题

  •  0
  • Karim Agha  · 技术社区  · 16 年前

    我正在构建一个WPF应用程序,这个WPF应用程序有一个类似工具栏的面板,用于根据上下文添加按钮。

    工具栏的代码是:

    <Grid x:Name="ToolBarGrid" VerticalAlignment="Top" Height="46">
              <Grid.Background>
                 <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="#FFDEDEDE" Offset="1"/>
                    <GradientStop Color="White"/>
                 </LinearGradientBrush>
             </Grid.Background>
             <Grid.Effect>
                <DropShadowEffect Direction="270" BlurRadius="26" Opacity="0.215" Color="#FF647A9B"/>
            </Grid.Effect>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>
    
            <ItemsControl Grid.Row="0" Grid.Column="0" Name="Toolbar" Margin="0" Padding="0" VerticalAlignment="Top" Height="46" ItemsSource="{Binding View.ToolbarElements}">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <WrapPanel />
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
            </ItemsControl>
    
            <Border VerticalAlignment="Bottom" Height="0.5" BorderThickness="0.5" BorderBrush="Black"/>
        </Grid>
    

    当我在Windows 7(x64,.net 3.5 sp1,c2q,geforce gtx 280)下运行此应用程序时,应用程序如下所示:

    alt text http://i48.tinypic.com/t5t7rl.png

    然后我想在32位和64位版本下测试Windows XP、Vista和7下的软件,因为它使用硬件,我想确保我的设备驱动程序在其他系统上也能正常工作。是的。 但问题是,当我在VMware(6.5)中创建了一个新的虚拟机并启动了应用程序时,工具栏看起来是这样的:

    Windows 7(x86):

    alt text http://i47.tinypic.com/w160jo.png

    Windows XP(x86):

    alt text http://i50.tinypic.com/28aomma.png

    嗯,我知道WPF出于性能原因使用硬件加速的WPF效果,而且我的vmware没有可能支持像素遮影器的硬件,所以我的客户机可能没有支持视频卡的像素遮影器。我不能为我的软件增加这样的硬件需求。

    但是,wpf不应该检查来宾操作系统是否支持这种效果,并使用其他基于软件的渲染效果吗?

    有没有解决方案可以让它在所有平台上看起来都一样?(至少是某种,即使是低质量的,基于软件的模拟)或者一种在保持渐变的同时完全禁用效果的方法?

    工具栏在每个操作系统(甚至是虚拟机)上都是可点击的,当我点击一个按钮应该在的白色区域时,它会做出正确的反应(按钮被点击)。

    谢谢你的帮助。

    1 回复  |  直到 13 年前
        1
  •  1
  •   Ana Betts    16 年前

    vmware已知wpf存在错误-有些错误在wpf4中已修复,但一般情况下,您应该在vmware中禁用wpf的hw加速: http://blog.paulbetts.org/index.php/2010/01/10/expression-blend-glitches-in-vmware-parallels 演示如何执行。

    推荐文章