我正在构建一个WPF应用程序,并且此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这个应用程序(64位,.NET 3.5 SP1,C2Q,的GeForce GTX 280)的应用程序是这样的:
alt text http://i48.tinypic.com/t5t7rl.png
然后,我想在Windows XP,Vista和7下测试32位和64位版本的软件,因为它使用硬件,我想确保我的设备驱动程序在其他系统上也能正常工作。他们是这样。 但问题是,当我在VMware的(6.5),创建一个新的虚拟机,并共进午餐的应用,工具栏看起来是这样的:
的Windows 7(86):
alt text http://i47.tinypic.com/w160jo.png
Windows XP中(86):
alt text http://i50.tinypic.com/28aomma.png
嗯,我明白了WPF利用了硬件加速的WPF效果的性能比较的原因,我的VMware不有一个可能支持像素着色器的硬件,所以我的客户可能有一台没有支持视频卡的像素着色器的机器。我无法为我的软件添加这样的硬件要求。
但不是WPF应该检查来宾操作系统是否支持这种效果并使用替代的基于软件的渲染效果?
有没有解决方案,使它看起来在所有平台上都一样? (至少是某种类型的,即使质量较低,基于软件的仿真),或者在保持渐变的同时完全禁用效果的方法?
工具栏在每个操作系统(甚至是虚拟机)上都是可点击的,当我点击一个按钮所在位置的白色区域时,它会正确反应(按钮被点击)。
感谢您的帮助。
我没有选中VMware中的“加速3D图形(DirectX 9.0c)”,所有内容都完美呈现。但仍然有任何想法为什么会发生? – 2010-02-26 00:01:36