【发布时间】:2014-02-19 10:25:39
【问题描述】:
IDE:Visual Studio、C#、来自应用程序的 Windows
我正在尝试在面板上画一条线。我可以通过点击在 panel1 上画线。
//Code
public partial class Form1 : Form
{
static int px=5, py=5;
public Form1()
{
InitializeComponent();
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawLine(Pens.Red, 5, 5, px, py);
}
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
initilizeXY(e.X, e.Y);
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
}
private void initilizeXY( int pxx, int pyy)
{
px = pxx;
py = pyy;
}
private void panel1_MouseUp(object sender, MouseEventArgs e)
{
panel1.Refresh();
}
private void panel2_MouseDown(object sender, MouseEventArgs e)
{
initilizeXY(e.X, e.Y);
}
}
// 通过这段代码,我可以在面板 1 上用鼠标向下画一条线。
但由于某些要求的变化,还有另一个面板(面板 2)与面板 1 部分重叠。
现在,如果用户单击 panel1 或 panel2,我想在 panel1 上绘制相同的线。
请建议如何完成这项工作?
【问题讨论】:
-
所以你想让线路从 panel1 继续到 panel2?
-
是的,我想要,因为在 panel1 上有小面板 panel2,如果我点击 panel2,我想要在 panel2 上使用相同的功能(画线)(实线)。
-
我相信这涉及到一些数学。找到您的线和 panel2 之间的交点。然后画两条线。可能有更简单的解决方案,但我现在想不出别的办法
-
重叠控件通常是一个问题,顶部的控件重叠并遮盖了底部的控件。但对于 Panel,以及其他一些不包装原生 Windows 控件的纯 .NET 控件,您可以简单地将第二个面板的 BackColor 属性设置为 Color.Transparent。只要它的 Parent 是重叠面板,当 parent 是表单时它就不起作用。如果是这种情况,那么做考虑根本不使用 Panel 控件,而只需使用表单的 Paint 事件。
标签: c# .net winforms visual-studio-2010