积极答复者
wpf界面透视问题?

问题
答案
-
你好。上面的问题我已经解决。暂时看不到问题的发生了。
本来想发界面的截图。无奈论坛不允许发图。
解决的办法如下:
首先怀疑是VS2010的BUG。这个是CSDN有人提出。但安装后问题依旧。
然后分析程序时,发现问题是在自定义控件样式里,比如textBox样式里,我为了鼠标IsMouseOver时,边框有发光效果。
使用了如下代码:默认时的效果
<Border Margin="1" x:Name="Bd" Background="White" CornerRadius="2"> <Border.Effect> <DropShadowEffect BlurRadius="6" Color="Transparent" Direction="0" ShadowDepth="0" RenderingBias="Performance"/> </Border.Effect> </Border>
然后在触发器里使用了
<Trigger Property="IsMouseOver" Value="true"> <Setter Property="Effect" TargetName="Bd"> <Setter.Value> <DropShadowEffect BlurRadius="6" Color="#FFB4D7EA" Direction="0" ShadowDepth="0" RenderingBias="Performance"/> </Setter.Value> </Setter> </Trigger>
比如CheckBox,comboBox样式里都有这些代码,我把这些默认时的Effect代码去除后,问题解决。
在有些界面上,左边有个工具栏,在界面上也有Effect阴影效果,居然这端代码却影响到右边出现透视的问题。
<Border x:Name="MapToolBar" Margin="0,0,0,0" Height="29" Opacity="0.91" BorderThickness="0,1,0,1" BorderBrush="#FF3491B4" SnapsToDevicePixels="True" VerticalAlignment="Top"> <Border.Effect> <DropShadowEffect Direction="270" Opacity="0.245" ShadowDepth="4"/> </Border.Effect>
去除<Border.Effect>阴影效果代码后,问题解决。
经大量测试,问题均不再出现。由此判断是Effect效果造成的问题。
网上查了相关资料,Effect效果它会占用很多cpu时间, 而显得效率低下,而且会大量占用内存。估计是显卡对Effect的支持不够,造成的。具体截图可以看CSDN我发的帖子
http://bbs.csdn.net/topics/390695860
- 已建议为答案 Leo (Apple) YangModerator 2014年2月10日 4:39
- 已标记为答案 Leo (Apple) YangModerator 2014年2月13日 5:48
全部回复
-
你好,
对于你提到的这个问题,我进行了一些调查,在我们内部的Feedback系统上没有发现类似的反馈。这里是我的一些想法和建议。因为这个问题只出现在个别的电脑上,还有个别的控件上。我想我们这样来处理,首先建议你升级VS到最新的版本,Visual Studio 2012目前最新的时Update 4. 可以通过 工具 -> 扩展和更新 -> 更新 查找到VS最新的升级包。另外我测试这个问题可能与个别的系统主题有关。建议先采用升级VS的方式。如果这样不能帮助你解决这个问题。建议提供下出现这个问题的具体软件版本,操作系统版本。最好能附上电脑的配置,如显卡等。另外附上这个问题的截图,这样便于我们分析问题。
希望我的回复能够帮助你。
谢谢!
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click HERE to participate the survey. -
你好。上面的问题我已经解决。暂时看不到问题的发生了。
本来想发界面的截图。无奈论坛不允许发图。
解决的办法如下:
首先怀疑是VS2010的BUG。这个是CSDN有人提出。但安装后问题依旧。
然后分析程序时,发现问题是在自定义控件样式里,比如textBox样式里,我为了鼠标IsMouseOver时,边框有发光效果。
使用了如下代码:默认时的效果
<Border Margin="1" x:Name="Bd" Background="White" CornerRadius="2"> <Border.Effect> <DropShadowEffect BlurRadius="6" Color="Transparent" Direction="0" ShadowDepth="0" RenderingBias="Performance"/> </Border.Effect> </Border>
然后在触发器里使用了
<Trigger Property="IsMouseOver" Value="true"> <Setter Property="Effect" TargetName="Bd"> <Setter.Value> <DropShadowEffect BlurRadius="6" Color="#FFB4D7EA" Direction="0" ShadowDepth="0" RenderingBias="Performance"/> </Setter.Value> </Setter> </Trigger>
比如CheckBox,comboBox样式里都有这些代码,我把这些默认时的Effect代码去除后,问题解决。
在有些界面上,左边有个工具栏,在界面上也有Effect阴影效果,居然这端代码却影响到右边出现透视的问题。
<Border x:Name="MapToolBar" Margin="0,0,0,0" Height="29" Opacity="0.91" BorderThickness="0,1,0,1" BorderBrush="#FF3491B4" SnapsToDevicePixels="True" VerticalAlignment="Top"> <Border.Effect> <DropShadowEffect Direction="270" Opacity="0.245" ShadowDepth="4"/> </Border.Effect>
去除<Border.Effect>阴影效果代码后,问题解决。
经大量测试,问题均不再出现。由此判断是Effect效果造成的问题。
网上查了相关资料,Effect效果它会占用很多cpu时间, 而显得效率低下,而且会大量占用内存。估计是显卡对Effect的支持不够,造成的。具体截图可以看CSDN我发的帖子
http://bbs.csdn.net/topics/390695860
- 已建议为答案 Leo (Apple) YangModerator 2014年2月10日 4:39
- 已标记为答案 Leo (Apple) YangModerator 2014年2月13日 5:48