0
我想要命中 - 測試繪製的位圖,以查看給定的點在圖像的非透明像素中是否可見。從位圖的非透明區域創建區域或圖形路徑
例如,做這個測試的整個位圖的矩形,你會做這樣的事情:
Bitmap bitmap = new Bitmap("filename.jpg");
GraphicsPath path = new GraphicsPath();
Rectangle bitmapRect = new Rectangle(x, y, bitmap.Width, bitmap.Height);
path.AddRectangle(bitmapRect);
if (path.IsVisible(mouseLocation))
OnBitmapClicked();
但是,如果我有一個非矩形項目的位圖,我希望能夠檢查他們是否點擊了非透明區域,在.NET框架中是否有任何支持的方式來執行此操作?
我認爲這樣做的唯一方法是將位圖字節鎖定到數組中,並遍歷它,將每個x,y座標添加到Point結構數組中。然後使用這些點結構來組裝一個GraphicsPath。
由於這些點是基於零點的,所以我需要用鼠標位置與圖像被繪製的x,y座標和0,0之間的距離來抵消我的鼠標位置。但是,如果我多次繪製圖像,只要圖像沒有偏斜或縮放比例不同,我就可以基本上爲每個圖像使用相同的GraphicsPath。
如果這是唯一不錯的路線,我該如何將點添加到GraphicsPath?從點到點畫線?畫一條閉合的曲線?