【问题标题】:Draw Connection line between two forms outside Form bounds C#在表单边界C#之外的两个表单之间绘制连接线
【发布时间】:2014-01-21 16:32:51
【问题描述】:

我正在尝试在两种形式之间划清界限以供我的特定用途使用。我想知道如何在表单边界之外的两个表单之间绘制连接线。我尝试使用 GetDC 并尝试在桌面上绘制它,但当某物在该区域移动或刷新时它被删除。我没有任何要重绘的事件。我尝试使用背面表格使其透明并在其中绘制,但速度很慢,我无法单击表格背面的任何内容。我在视觉工作室看过一个样本。我想像下面这样画一条线。

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

【问题讨论】:

    标签: c# forms graphics


    【解决方案1】:

    使用windows API可以实现windows之间的画线。我们需要为两个窗口的大小调整添加事件处理程序,然后调用 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;
    

    }

    【讨论】:

    • 我正在考虑添加消息循环处理程序以在刷新后保留该行。
    • 但这会在刷新屏幕时被删除,对吧?我希望这条线与 Visual Studio 中的完全一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    相关资源
    最近更新 更多