如何確定線條的寬度在構造或CPEN ::個CreatePen設置在箱子:MFC CPEN ::個CreatePen線寬
- 如果我在標尺60%顯示例如圖像和我需要的我的線在屏幕上是1毫米。
- 如果我想我的線寬是圖像最大(寬,高)
如何確定線條的寬度在構造或CPEN ::個CreatePen設置在箱子:MFC CPEN ::個CreatePen線寬
首先爲0.01%,CPEN寬度的類型是int,所以你必須使用整型。
但是,如果您使用第二個計劃,則下面的代碼可用,但您必須關注寬度的類型和值。
CImage image;
float max_value = static_cast<float>(max(image.GetWidth(), image.GetHeight()));
//get value for 1%
float pen_width = max_value * 0.01f;
CPen pen(PS_SOLID, static_cast<int>(pen_width), RGB(0, 0, 0));
它實際上是什麼意思pen_width = 1?這是否意味着在圖像上它將是1像素厚?如果pen_width = n => n像素厚? – mrgloom
如果寬度爲0,則無論映射模式如何,總是1像素。否則,它取決於映射模式。 [映射模式](http://www.cs.binghamton.edu/~reckert/360/14a_map_modes_f03.html),[CPen-MSDN](http://msdn.microsoft.com/en-us//library/ ykez8tds.aspx) – hyun
但我認爲映射模式只能影響基元的幾何形狀,而不影響筆寬。 – mrgloom
在這種情況下,我總是工作的是各向異性映射模式。在這種情況下,GDI爲我完成所有的工作。 – xMRi
@xMRi你可以提供如何使用映射模式完成的示例嗎? – mrgloom
作爲一個介紹它就足夠了。另請閱讀有關映射模式的MSDN。這個想法是將內部邏輯單元和外部設備單元分開。使用各向異性映射模式,您可以將所有計算保留至GDI。你只需要從內部座標轉換到外部座標,反之亦然。 DPtoLP,LPtoDP。我希望這一切都覆蓋在這裏:http://www.codeguru.com/cpp/wd/doc_view/scrolling/article.php/c3345/Add-Zoom-and-Scale-Capabilities-to-CScrollView.htm – xMRi