2010-02-12 91 views

回答

4

要做到這一點,你需要看看自己的位圖。 WPF的命中測試機制認爲即使看不見,仍然可以點擊「透明」畫筆繪製的任何像素。這通常是一件好事,但阻礙了你想要做的事情。因爲.png是用透明畫筆繪製的,所以整個.png在進行命中測試時被認爲是繪製的。

你需要在你MouseMove事件處理程序做的是:

  1. 來吧,調用擊中測試正常方式。
  2. 對於每個HitTestResult你回來,檢查,看它是否是一個Image如果是這樣,一個透明的像素是否是鼠標下
  3. 當你得到一個非圖像或不透明像素上一炮打響一個圖像,停下來。
  4. 決定基於一個Cursor值鼠標是什麼超過

要確定鼠標是否已經過去的圖像的透明像素:

  1. 獲取相對於圖像鼠標位置(e.GetPosition(image)
  2. 如果您使用拉伸:在這一點上,你必須回計算拉伸得到一個位圖索引
  3. 使用BitmapSource.CopyPixels複製1個像素的直腸進入數組(即。只有單個像素的鼠標懸停)
  4. 檢查被檢索看到的像素值,如果它是一個透明像素
+0

這是一個很值得我所做的和出色的作品。 – TWith2Sugars 2010-02-13 15:30:57