Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何更改WPF控件的缩放,但仍占用全部空间?_Wpf - Fatal编程技术网

如何更改WPF控件的缩放,但仍占用全部空间?

如何更改WPF控件的缩放,但仍占用全部空间?,wpf,Wpf,在WPF应用程序中,我使用的是一个web浏览器控件(实际上它是awesomium,但我不确定这是否重要)。此控件正在使用某种互操作 我希望我的应用程序能够“缩小”网络内容。web内容应减少到其大小的50% 如果仅应用ScalTransform,则浏览器控件将缩小为exptected(所有内容都较小),但控件的可见边界也将缩小 我想让web控件占据其容器的全部可用位置。如何做到这一点 我现在已经做到了: <Canvas SizeChanged="Canvas_SizeChanged"

在WPF应用程序中,我使用的是一个web浏览器控件(实际上它是awesomium,但我不确定这是否重要)。此控件正在使用某种互操作

我希望我的应用程序能够“缩小”网络内容。web内容应减少到其大小的50%

如果仅应用
ScalTransform
,则浏览器控件将缩小为exptected(所有内容都较小),但控件的可见边界也将缩小

我想让web控件占据其容器的全部可用位置。如何做到这一点

我现在已经做到了:

<Canvas SizeChanged="Canvas_SizeChanged"
        MinWidth="100"
        MinHeight="100">
    <Custom:WebControl x:Name="browser"
                       RenderTransformOrigin="0,0"
                       Width="100"
                       Height="100">
        <Custom:WebControl.RenderTransform>
            <TransformGroup>
                <ScaleTransform ScaleX="0.5"
                                ScaleY="0.5" />
                <SkewTransform />
                <RotateTransform />
                <TranslateTransform />
            </TransformGroup>
        </Custom:WebControl.RenderTransform>           
    </Custom:WebControl>
</Canvas>

这是工作,有点低效。我想知道是否有更好的地方可以这样做(纯XML?)

这个答案适用于1.7版RC3(可用)

  • Awesomium.NET WPF
    WebControl
    实际上是纯WPF(当
    ViewType
    设置为
    Offscreen
    时,这是默认值)
  • 请检查您正在尝试执行的操作的示例

您对Webbrowser控件本身执行ScaleTransform,这显然会使整个Webbrowser控件变小。您只想调整其内容的大小。由于Awesomium和内置的webbrowser都不是纯wpf,您必须检查控件本身是否支持类似的内容。@JoachimKerschbaumer:我现在有webbrower控件的例子,但是没有适用于任何UIElement的通用方法吗?您可以对任何FrameworkElement应用缩放变换,但这改变了框架元素本身。如果您只想缩放它的内容,那么内容控件必须处理这个问题。但是,在您的情况下,这几乎是不可能的,因为存在一些互操作(没有纯wpf),您是否建议我添加一个新级别的容器(网格)并使用容器?
private void Canvas_SizeChanged(object sender, SizeChangedEventArgs e)
{
    browser.Width = e.NewSize.Width * 2;
    browser.Height = e.NewSize.Height * 2;
}