WPF中Image控件没有内容时不会触发鼠标事件的问题

我在用wpf制作图片缩放功能的时候,在一个Grid中放了一个Image,然后重写了Image的相关的MouseLeftButtonDown,MouseLeftButtonUp,MouseMove事件,xaml中的代码如下:

<Grid Name="ImgGrid" Width="600" ClipToBounds="True">
            <Image  x:Name="ImgCtrl" Source="desktop.jpg" Stretch="Uniform" MouseLeftButtonDown="ImgCtrlMouseLeftButtonDown"
                MouseRightButtonUp="ImgCtrl_MouseRightButtonUp" MouseLeftButtonUp="ImgCtrlMouseLeftButtonUp" MouseMove="ImgCtrlMouseMove"
                     MouseWheel="ImgCtrlMouseWheel">
                <Image.RenderTransform>
                    <TransformGroup>
                        <ScaleTransform x:Name="mScaleTransForm" ScaleX="1.0" CenterX="0"/>
                        <TranslateTransform x:Name="mTranslateTransform" X="0" Y="0"/>
                    </TransformGroup>
                </Image.RenderTransform>
            </Image>
        </Grid>

但发现如果是在下图所示区域用鼠标进行拖动和缩放时,不会响应鼠标事件。

在这里插入图片描述
所以我把相关的鼠标响应事件代码从Image中移动到了Grid中,如下:

<Grid Name="ImgGrid" Width="600" ClipToBounds="True" MouseLeftButtonDown="ImgCtrlMouseLeftButtonDown"
                MouseRightButtonUp="ImgCtrl_MouseRightButtonUp" MouseLeftButtonUp="ImgCtrlMouseLeftButtonUp" MouseMove="ImgCtrlMouseMove"
                     MouseWheel="ImgCtrlMouseWheel">

结果发现还不行

后来研究了半天才发现,grid中默认背景为空,这时候,怎么点击grid的背景都不会出发鼠标事件,我们需要给它一个背景,如果我们不想要背景颜色的话,那就设置成透明,如下添加一个Background="Transparent

<Grid Name="ImgGrid" Width="600" ClipToBounds="True" MouseLeftButtonDown="ImgCtrlMouseLeftButtonDown"
                MouseRightButtonUp="ImgCtrl_MouseRightButtonUp" MouseLeftButtonUp="ImgCtrlMouseLeftButtonUp" MouseMove="ImgCtrlMouseMove"          MouseWheel="ImgCtrlMouseWheel"  Background="Transparent">

虽然背景为transparent透明,但这时候是有背景的,所以就能出发鼠标事件了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GreenHandBruce

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值