Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在模板边界C外的两个模板之间绘制连接线#_C#_Forms_Graphics - Fatal编程技术网

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

C# 在模板边界C外的两个模板之间绘制连接线#,c#,forms,graphics,C#,Forms,Graphics,我正试图在两种形式之间划一条线,以供我具体使用。我想知道如何在表单边界之外的两个表单之间绘制连接线。我尝试使用GetDC并尝试在桌面上绘制它,但当某个区域移动或刷新时,它会被删除。我没有任何事件需要重新绘制。我试着使用一个背面表单,使其透明并在其中绘制,但速度非常慢,我无法单击表单背面的任何内容。我在VisualStudio中看到了一个示例。我想画一条像下面这样的线 使用windows API可以实现在窗口之间绘制线条。我们需要为两个窗口的大小调整添加事件处理程序,然后调用windows API

我正试图在两种形式之间划一条线,以供我具体使用。我想知道如何在表单边界之外的两个表单之间绘制连接线。我尝试使用GetDC并尝试在桌面上绘制它,但当某个区域移动或刷新时,它会被删除。我没有任何事件需要重新绘制。我试着使用一个背面表单,使其透明并在其中绘制,但速度非常慢,我无法单击表单背面的任何内容。我在VisualStudio中看到了一个示例。我想画一条像下面这样的线


使用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;
#包括
LRESULT回调WndProc(HWND、UINT、WPARAM、LPARAM);
int WINAPI WinMain(HINSTANCE HINSTANCE,
HINSTANCE HPPrevenstance,
LPSTR lpCmdLine,
int nShowCmd)
{
HDC-HDC;
HWND-HWND;
COLORREF clr;
hwnd=GetDesktopWindow();
//桌面的DC
hdc=GetWindowDC(hwnd);
//背景色
SetBkMode(hdc,透明);
MoveToEx(hdc,0,0,NULL);
//刷新后,该行将消失
LineTo(hdc,500500);
释放DC(hwnd、hdc);
睡眠(5000);
返回0;

}

我正在考虑添加消息循环处理程序,以便在刷新后保留该行。但这将在刷新屏幕时删除,对吗?我希望该行与VisualStudio中的完全相同。