C# 在网格中定位大小不同的图像-有些图像溢出到其他单元格中

C# 在网格中定位大小不同的图像-有些图像溢出到其他单元格中,c#,xaml,microsoft-metro,windows-runtime,C#,Xaml,Microsoft Metro,Windows Runtime,我有一个网格,可以容纳四幅图像。图像本身大小相同,但图像的视觉部分可以/将不同(因此部分图像将是透明的) 我希望图像的透明部分溢出到网格的其他单元格中 我还通过了网格测试。一个用于指针悬停,一个用于按下 如何在网格中获取这些图像并维护溢出和命中测试 到目前为止,我的解决方案是有9列,然后: 第一个图像采用0到2列 第二张图需要2到4分钟 第三幅图4至6 第四张图片需要6到8分钟 这样图像溢出。但问题是,当添加每个后续图像时,它都会位于共享列的顶部,因此任何鼠标悬停都会随之发生 在WPF中,您

我有一个
网格
,可以容纳四幅图像。图像本身大小相同,但图像的视觉部分可以/将不同(因此部分图像将是透明的)

我希望图像的透明部分溢出到网格的其他单元格中

我还通过了网格测试。一个用于指针悬停,一个用于按下

如何在网格中获取这些图像并维护溢出和命中测试

到目前为止,我的解决方案是有9列,然后:

  • 第一个图像采用0到2列
  • 第二张图需要2到4分钟
  • 第三幅图4至6
  • 第四张图片需要6到8分钟
这样图像溢出。但问题是,当添加每个后续图像时,它都会位于共享列的顶部,因此任何鼠标悬停都会随之发生

在WPF中,您可以从
图像
派生以覆盖
HitTestCore
;有了Metro,你不能这么做。我的计划是只测试不透明像素

如果我能对命中测试进行排序,我就能让这个方法工作。不过,如果有其他/更好的解决方案,我洗耳恭听。

根据Metro风格的应用程序:

Image和MediaElement控件可在其定义的矩形上进行命中测试,而不考虑透明内容


所以我认为地铁这样做是不可能实现的。请注意,我之前的评论(画布)似乎也不起作用(关于下面的链接)。

我选择的解决方案是将包含所有图像的网格与另一个包含我所需大小的矩形的网格重叠。然后我可以使用矩形作为命中测试,而不是底层图像。

为什么不使用画布?根据您的解释,我假设您的网格尺寸是固定的。我想保留一个面板,以便在分辨率发生变化时,所有内容都能正确匹配。我想我可以根据屏幕大小手动计算X和Y值,我只是不想。。。