2013-10-09 88 views
0

我正在研究一個使用datagridview可視化一些數據的應用程序。數據的邏輯結構是四乘四。爲了可視化這一點,我想在datagridview的第四行繪製一行/邊框。DataGridView中的自定義繪畫,奇怪的視覺外觀

我已經寫了下面的RowPostPaint方法做到了這一點(剝離的散裝代碼)

System::Void dataGridView1_RowPostPaint(System::Object^ sender, Forms::DataGridViewRowPostPaintEventArgs^ e) { 

    A = ... 

    Rectangle rowBorder = dataGridView1->GetRowDisplayRectangle(e->RowIndex,true); 

    if(A->ID % 4 == 0){ 
     e->Graphics->DrawLine(gcnew Pen(Drawing::Color::Black),(float) 
     rowBorder.X ,(float)(rowBorder.Y + rowBorder.Height-2), (float) rowBorder.X + 
     rowBorder.Width ,(float) (rowBorder.Y + rowBorder.Height-2)); 
    } 
} 

出於某種原因,這幅畫被破壞(顯示的行數比應該有,見圖片)當我使用滾動條或調整窗口大小。例如,通過選擇受影響的行來強制重畫會使錯誤的行消失。

我已經嘗試了幾個技巧(雙緩衝,剪輯等)來解決這個問題,但我還沒有能夠這樣做。你可能已經想通了,我對C++/cli中的圖形/繪畫很新穎。 現在我的想法,我希望你能想出一些新鮮的

Errornous painting

回答

0

我通過在每一行,而不是在底部頂部畫固定的問題。這些工件是由於我使用行高來決定在哪一行中繪製線條而創建的。 (如果底部的行部分顯示,則行高也會受到影響。)