Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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
MFC不使用LineTo绘制矩形边_Mfc_Visual C++ 2012 - Fatal编程技术网

MFC不使用LineTo绘制矩形边

MFC不使用LineTo绘制矩形边,mfc,visual-c++-2012,Mfc,Visual C++ 2012,我在使用MFC CDC类以及LineTo和MoveTo函数进行绘图时遇到问题。 CDC对象不是从我移动指针的点开始,而是在图像中心留下第一个像素blanc。当我在图像左侧的一个拐角处画图时,很明显CDC对象没有留下最外面的像素。 我确实尝试加载自定义笔刷,但没有不同的结果 memDC.FillSolidRect(client, BACKGROUND_COLOR); CPen penBorder(PS_ENDCAP_SQUARE | PS_SOLID, BORDER_WIDTH,

我在使用MFC CDC类以及LineTo和MoveTo函数进行绘图时遇到问题。 CDC对象不是从我移动指针的点开始,而是在图像中心留下第一个像素blanc。当我在图像左侧的一个拐角处画图时,很明显CDC对象没有留下最外面的像素。 我确实尝试加载自定义笔刷,但没有不同的结果

    memDC.FillSolidRect(client, BACKGROUND_COLOR);
    CPen penBorder(PS_ENDCAP_SQUARE | PS_SOLID, BORDER_WIDTH, BORDER_COLOR);
    //Draw the Horizontal line for the Status Bar
    CPen* oldPen = memDC.SelectObject(&penBorder);
    memDC.MoveTo(client.left + 0.5f * BORDER_WIDTH, client.top + 0.5f * BORDER_WIDTH);
    memDC.LineTo(client.Width() - 0.5f * BORDER_WIDTH, client.top + 0.5f * BORDER_WIDTH);
    CPen penRecess(PS_ENDCAP_SQUARE | PS_SOLID, BORDER_WIDTH, RECESS_COLOR);
    //Draw the recess
    memDC.SelectObject(&penRecess);
    memDC.MoveTo(client.left + 1.5f * BORDER_WIDTH, client.top + 1.5f * BORDER_WIDTH);
    memDC.LineTo(client.Width() - 0.5f * BORDER_WIDTH, client.top + 1.5f * BORDER_WIDTH);


这个问题与MFC无关,而是底层Windows GDI函数固有的问题。报告说:

LineTo函数从当前位置到指定点(但不包括指定点)绘制一条直线

如果需要绘制最后一个点,则应在距离第一个点一个像素处进行第二次
LineTo