【发布时间】:2014-03-09 23:45:21
【问题描述】:
我想在点击图片框时获得 x、y 位置。我有 2 个图片框,一个在另一个之上。小图片框有一个透明区域背景 (.png)。 当我点击这个区域时,我想得到第二个的图片框。
这是获取 x,y 位置的代码:
pictureBox2.MouseClick += (s, e) =>
{
if (e.Button == MouseButtons.Right)
{
MessageBox.Show(String.Format("Right Clicked2 at X: {0} Y: {1}", e.X, e.Y));
}
else if (e.Button == MouseButtons.Left)
{ MessageBox.Show(String.Format("Mouse Clicked2 at X: {0} Y: {1}", e.X, e.Y)); }
};
pictureBox1.MouseClick += (s, e) =>
{
if (e.Button == MouseButtons.Right)
{
MessageBox.Show(String.Format("Right Clicked at X: {0} Y: {1}", e.X, e.Y));
}
else if (e.Button == MouseButtons.Left)
{ MessageBox.Show(String.Format("Mouse Clicked at X: {0} Y: {1}", e.X, e.Y)); }
};
使用此代码显示第二张图片(显示效果很好)。但是当我点击透明区域时,它给了我来自picturebox2而不是picturebox1的消息。知道如何将此区域分配给picturebox1吗?
var pos = this.PointToScreen(pictureBox2.Location);
pos = pictureBox1.PointToClient(pos);
pictureBox2.Parent = pictureBox1;
pictureBox2.Location = pos;
pictureBox2.BackColor = Color.Transparent;
【问题讨论】:
-
不相关:无论您想在这里做什么,winforms 都不是正确的技术。如果您想创建硬核游戏,请查看 XNA、MonoGame 或 Unity3D。如果您想创建更简单的 2D 游戏,可以使用 WPF。
-
我不明白你在做什么。 “删除透明背景”是什么意思?
-
我不想显示这个透明区域。当点击这个区域时,我希望点击picturebox1而不是picturebox2
-
@HighCore XNA 不是“死”了吗? (至少根据XNA Wikipedia article)。
-
它已经死了,它不是正确的技术。游戏框架的生存技能只比我冰箱里的牛奶好:) pictureBox1 鼠标事件永远不会触发,一个简单的解决方法是使用 Bitmap.GetPixel() 并检查 alpha。
标签: c# winforms picturebox regions