如何在 pictureBox 中制作半透明图像以仅使用 C# 中的可见像素捕获鼠标事件?
How can I make a half transparent image inside a pictureBox to capture mouse events only with its visible pixels in C#?
我正在使用 C# 在 Form 的 pictureBox 中绘制一个具有透明背景的方形图像。我只希望它用它的可见部分捕获鼠标事件,但它碰巧用它的整个表面来捕获事件。
这将适用于 Normal 和 AutoSize 的 SizeMode:
if (new Bitmap(((PictureBox)sender).Image).GetPixel(e.X, e.Y).A >= 8)
// do stuff
否则您可能需要进行一些计算才能获得像素位置。
如果这对您有用,您还应该考虑将位图存储在一个变量中,而不是在每次鼠标事件时更新它。
编辑:我使用 8 作为增量值而不是零来为几乎完全透明的像素留下一些 space,当然你不必这样做。
我正在使用 C# 在 Form 的 pictureBox 中绘制一个具有透明背景的方形图像。我只希望它用它的可见部分捕获鼠标事件,但它碰巧用它的整个表面来捕获事件。
这将适用于 Normal 和 AutoSize 的 SizeMode:
if (new Bitmap(((PictureBox)sender).Image).GetPixel(e.X, e.Y).A >= 8)
// do stuff
否则您可能需要进行一些计算才能获得像素位置。
如果这对您有用,您还应该考虑将位图存储在一个变量中,而不是在每次鼠标事件时更新它。
编辑:我使用 8 作为增量值而不是零来为几乎完全透明的像素留下一些 space,当然你不必这样做。