2013-02-05 88 views
0

使用MFC CDC類和LineTo和MoveTo函數繪製時出現問題。 CDC對象不是從我移動指針的位置開始,而是像圖像中心那樣留下第一個Pixel Blanc。當我在圖像左側畫一個角落時,很明顯CDC對象會留下最外面的像素。 我曾嘗試加載自定義畫筆,但沒有不同的結果。MFC不使用Line繪製矩形邊線

Edge example

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); 

回答

1

的問題無關,與MFC,但在底層的Windows GDI函數所固有的。 documentation for LineTo說:

LineTo函數從當前位置向上繪製一條線,但不包括指定的點。

如果你需要繪製最後一個點,你應該做第二個LineTo一個像素遠離第一個。