很多个偶然因素导致的一个待解释的bug

最近用WPF开发绘图类程序,借鉴了http://www.codeproject.com/Articles/22776/WPF-DrawTools的WPF-DrawTools程序,此程序在本地运行一切正常,远程连接此电脑运行程序时,绘制图形会导致程序异常退出。

程序的Undo/Redo按钮采用了图片,禁用按钮时会触发Trigger将图片进行模糊处理。具体XAML代码见下面:
 (effects命名空间为xmlns:effects="clr-namespace:System.Windows.Media.Effects;assembly=presentationcore")

<Window.Resources>

<effects:BlurBitmapEffect x:Key="bmpEffect" KernelType="Box" Radius="2"/>
        <Style x:Key="toolbarImageStyle" TargetType="Image">
            <Style.Triggers>
                <DataTrigger Value="False"
                    Binding="{Binding
                        Path=IsEnabled,
                        RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Button}, AncestorLevel=1}}"

      >
                    <Setter Property="Image.BitmapEffect" Value="{StaticResource bmpEffect}" />
                </DataTrigger>
            </Style.Triggers>
        </Style>

</Window.Resources>

Undo/Redo按钮使用以上方式为

      <Button Name="undo" ToolTip="Undo"
                        Command="{Binding EditUndoCommand}"
                        IsEnabled="{Binding ElementName=drawingCanvas, Path=CanUndo, Mode=OneWay}">
                    <Image Source="Resources/Images/Edit_UndoHS.png"
                           Style="{StaticResource toolbarImageStyle}"/>
                </Button>
                <Button Name="redo" ToolTip="Redo"
                        Command="{Binding EditRedoCommand}"
                        IsEnabled="{Binding ElementName=drawingCanvas, Path=CanRedo, Mode=OneWay}">
                    <Image Source="Resources/Images/Edit_RedoHS.png"
                           Style="{StaticResource toolbarImageStyle}"/>
                </Button>

最终发现问题原因真是令人哭笑不得,匪夷所思,以上模糊半径为2时,程序会异常退出。模糊半径改为非2的数字例如2.1,1.8,5等,程序则完全正常。

这得是多少个巧合才能遇到的bug啊!求大牛指点!

 

转载于:https://www.cnblogs.com/tsingfei/archive/2013/04/13/3018999.html

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值