Я создаю приложение 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 (x64, .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 (x86):
alt text http://i47.tinypic.com/w160jo.png
Windows XP (x86):
alt text http://i50.tinypic.com/28aomma.png
Ну, я понимаю, что WPF позволяет использовать аппаратное ускорение WPF эффектов по причинам Perfomance и мой VMware не имеют аппаратное обеспечение, которое может поддерживать пиксельные шейдеры, поэтому мой клиент может иметь машину, у которой нет видеокарты с поддержкой пиксельных шейдеров. Я не могу позволить себе добавлять такие аппаратные требования для своего программного обеспечения.
Но разве WPF не должен проверять, поддерживает ли гостевая ОС такие эффекты и использует альтернативные эффекты на основе программного обеспечения?
Есть ли решение для этого, чтобы оно выглядело одинаково на всех платформах? (по крайней мере, какой-то, даже если более низкое качество, эмуляция на основе программного обеспечения) или способ полностью отключить эффекты при сохранении градиента?
Панель инструментов можно щелкнуть на каждой ОС (даже в виртуальной машине), и когда я нажимаю на белую область в месте, где должна быть кнопка, она реагирует правильно (кнопка нажата).
Спасибо за помощь.
Я снял флажок «Ускорить 3D-графику (DirectX 9.0c)» в VMware, и все сделано отлично. Но все-таки какая-то идея, почему это произошло? –