我正在使用WPF中的自定義控件來實現OnRender,通過調用訪問函數來訪問自己。該控件實現了根據需要繪製線條,圓圈等的訪問者界面。沒有兒童控制。WPF:自定義控件佈局
這一切都有效,當控件呈現時,我可以看到從我的OnRender調用渲染的原語。
但是,我正在努力控制由此產生的佈局。 Image控件完全符合我想要的。我如何複製該行爲?具體來說:
- 如果用戶沒有指定寬度或高度,我想要設置控件的渲染寬度/高度(無論是在我的構造函數中還是來自控制佈局的其他函數)。
- 如果用戶將寬度或高度設置爲特定值,我想對圖形進行變換,以保持控件和圖形的高寬比。
我想使用MeasureOverride函數來實現我想要的行爲,但我沒有得到任何結果。我的控制是以零寬度/高度佈置的,然後我所有的繪圖都會繪製在相鄰控件的頂部。下面是我想到目前爲止,希望這說明了什麼,我試圖做的:
protected override Size MeasureOverride(Size constraint)
{
SymbolLayout symbol = new SymbolLayout(this);
component.LayoutSymbol(symbol);
Point b1 = MapToPoint(symbol.LowerBound);
Point b2 = MapToPoint(symbol.UpperBound);
return new Size(b2.X - b1.X, b2.Y - b1.Y);
}
我甚至不能肯定的MeasureOverride是正確的功能使用來完成這個...