2010-02-25 5 views
0

Я создаю приложение 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 не должен проверять, поддерживает ли гостевая ОС такие эффекты и использует альтернативные эффекты на основе программного обеспечения?

Есть ли решение для этого, чтобы оно выглядело одинаково на всех платформах? (по крайней мере, какой-то, даже если более низкое качество, эмуляция на основе программного обеспечения) или способ полностью отключить эффекты при сохранении градиента?

Панель инструментов можно щелкнуть на каждой ОС (даже в виртуальной машине), и когда я нажимаю на белую область в месте, где должна быть кнопка, она реагирует правильно (кнопка нажата).

Спасибо за помощь.

+0

Я снял флажок «Ускорить 3D-графику (DirectX 9.0c)» в VMware, и все сделано отлично. Но все-таки какая-то идея, почему это произошло? –

ответ

Смежные вопросы