簡體   English   中英

在WP7 / WP8中禁用圖像透明部分的點擊事件

[英]Disable tap event on transparent part of image in WP7/WP8

我在Windows手機項目中使用了一些透明圖像。 讓我說我的Origanal圖像大小是400 x 100。

原始圖像

將圖像切割成四個不同的部分后,它看起來像這樣。 第一個箭頭是活動的,休息部分是透明的,但圖像大小是相同的400 x 100.我對其余三個箭頭做同樣的事情。 我將它們切成活動部分,而休息部分將是透明的,尺寸將是400 x 100.所以當我將所有4個圖像放在網格中時,它將顯示如上圖像。

切片后的圖像但寬度相同,一個部分是活動的,另一個部分是透明的

我想獲得每張圖片的點擊事件。 有什么方法我可以得到活動部分均值的點擊事件,它有一些值平均顏色值不是透明區域或圖像的非活動部分。 一旦我點擊第一張圖片,它就會給我一張該圖像的事件。 當我點擊第二張圖像時,它會給我第二張圖像的點擊事件。 但是當我點擊圖像時,它只給我一個點擊事件,因為它占據了整個寬度和高度,而其他圖像也是相同的大小。 請建議任何解決方法。

XAML

<Grid Name="Grid1">
    <Image Tag="Image1" Source="1.png"/>
    <Image Tag="Image2" Source="2.png"/>
    <!-- more images -->
</Grid>

CS

void MouseDown(object sender, MouseButtonEventArgs args)
{
    foreach (var img in ((Panel)sender).Children.OfType<Image>())
    {
        var w = new WriteableBitmap(img, null);
        var p = args.GetPosition(img);
        if (w.Pixels[w.PixelWidth * (int)p.Y + (int)p.X] != 0)
        {
            MessageBox.Show(string.Format("You clicked {0}!", img.Tag));
            args.Handled = true;
            break;
        }
    }
}

像這樣附加處理程序

Grid1.AddHandler(UIElement.MouseLeftButtonDownEvent,
    new MouseButtonEventHandler(MouseDown), false);

命名空間

using System.Linq;
using System.Windows.Media.Imaging;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM