C#WPF拉伸/缩放窗口与大小成比例

时间:2009-11-06 08:40:41

标签: c# wpf scale stretch

我知道FontStretch属性,但不确定如何使用它。

我想要的是创建一个分辨率为200x400的窗口。然后,当用户将其拉伸到400x800(或其他)时,我只想整个窗口拉伸/放大(在给定的场景中,一切都会增加一倍),而不是仅仅四处移动。如果它也适用于图像会很好,但只需获得字体和一般对象大小就可以了。

是否有任何内置函数或第三方库提供此功能?

2 个答案:

答案 0 :(得分:4)

如果您的所有内容都必须按比例拉伸,包括文字,控件和图片,请将主面板尺寸修改为200x400并将其包含在Viewbox面板中。

当用户以非比例方式(例如300x400)调整窗口大小时,可能会出现问题。然后,根据Viewbox.StretchDirection和Stretch属性,您可能会出现扭曲的布局或空白区域。要解决此问题,您可以将窗口大小限制为特定比率。

答案 1 :(得分:1)

您可以在此处查看ColorPicker控件的实现: http://livegeometry.codeplex.com/SourceControl/changeset/view/34720#405553 特别是MeasureOverride,ArrangeOverride和ComputeScaleFactor。 m_Scale是应用于整个控件的ScaleTransform。

如有必要,您还可以使用SizeToContent和LayoutTransform。