2014-04-10 67 views
0

我使用C++ Builder和嘗試使用DrawFocusRect功能:如何更改DrawFocusRect筆的寬度?

DrawRect.left = X; 
DrawRect.top = Y; 
DrawRect.right = X; 
DrawRect.bottom = Y; 
Canvas->DrawFocusRect(DrawRect); 

的問題是,這個矩形是隱約可見。我試過這個:

Canvas->Pen->Width = 2; 

但是沒有成功。是否有可能改變焦點矩形的寬度,還是有其他方法可以使用?

回答

1

此方法映射到Windows API函數DrawFocusRect。該文檔它說:

Windows XP中:焦點矩形現在可以比1個像素厚,所以它更可見於高分辨率,高密度顯示和訪問需求。這由SystemParametersInfo中的SPI_SETFOCUSBORDERWIDTHSPI_SETFOCUSBORDERHEIGHT來處理。

所以你確實可以控制寬度。但是,您所做的修改適用於當前桌面上的所有程序。我很確定這不是你想要的。所以我的建議是你不使用DrawFocusRect,而是手動繪製這個矩形。這很容易做到。它只是交替黑白像素,可以用BitBlt高效地繪製。很可能還有其他更簡單的方法。

+0

當使用簡單的矩形時,在繪製第二個矩形之前刪除矩形時出現問題。它看起來很亂。 – Tracer

+0

那麼,這與問題中提出的問題有些不同。這種問題的常見原因是你在錯誤的時間畫畫。通常你會響應'WM_PAINT'(在VCL中翻譯爲覆蓋'Paint'方法或'OnPaint'事件處理程序)。如果你在那段時間以外畫畫,那麼你可能遇到這樣的問題。 –

+0

我做到了。實際上,它非常簡單 - 只需將筆的顏色更改爲白色,然後重繪舊矩形(這會導致它看起來像不可見),然後在繪製新矩形之前將筆顏色更改爲黑色。謝謝! – Tracer