在表单边界C#之外的两个表单之间绘制连接线

时间:2014-01-21 05:30:08

标签: c# forms graphics

我正在尝试在两种表单之间画一条线以供我特定使用。我想知道如何在表单边界之外的两个表单之间绘制一条连接线。我尝试使用GetDC并尝试在桌面上绘制它,但当某些内容在该区域移动或刷新时删除它。我没有任何重新绘制的事件。我尝试使用后面的表格使其透明并绘制在其中,但它非常慢,我无法点击表格背面的任何东西。我在visual studio中看过一个样本。我想绘制一条如下所示的线。

https://skydrive.live.com/redir?resid=B140DB4D2C1B55DB!111&authkey=!APebmlRlneUpSn4&v=3&ithint=photo%2c.jpg

1 个答案:

答案 0 :(得分:0)

使用Windows API可以实现窗口之间的绘制线。我们需要为两个窗口调整大小添加事件处理程序,然后调用Windows API,例如 lineTo 在桌面上绘制一条线。

我是Windows API的初学者,需要进一步研究才能应用完整的解决方案。所以只显示线条绘制方法。虽然我确信它可以工作。

    #include <windows.h>

    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain(HINSTANCE hInstance,
               HINSTANCE hPrevInstance,
               LPSTR lpCmdLine,
               int nShowCmd)
{
HDC         hdc;
HWND        hwnd;
COLORREF    clr;

hwnd = GetDesktopWindow();
//DC of desktop
hdc = GetWindowDC(hwnd);

//Background color
SetBkMode(hdc, TRANSPARENT);

MoveToEx  (hdc, 0, 0, NULL) ;

//The line will disappear after refreshing
LineTo    (hdc, 500, 500) ; 
ReleaseDC(hwnd, hdc);

Sleep(5000);    

return 0;

}