C# · 12月 25, 2021

创建非活动C#WPF窗口的缩略图

我在这里查看了很多主题,并搜索了相关信息,但我没有找到与我的问题有关的任何内容.

我想要做的就是让用户启动应用程序时,主窗口(不是MDI)打开时有四个图像框,每个图像框显示一个窗体的图像,当它们点击它时会打开.一旦选定的表单打开并进行了更改,如果他们单击以最小化/关闭表单,它将(看似)最小化到图像框中,显示表单在缩略图视图中的外观的实时图像.

我的问题是,如何将图像制作成图像,以便将图像用作图像框中的缩略图?

此外……有人能指出我的某些资源,这将有助于我弄清楚如何动画“最小化”到图像框?

我不是要求任何人为我做我的工作,因为我想自己学习,但我有点卡住了.

最后,我不确定这涉及到什么,所以我不知道为这篇文章添加什么标签.当我弄清楚时,我会添加标签,以便其他人可以找到这些信息.

编辑:对不起,它在WPF中.不确定它会有什么不同.我在WPF方面仍然没有特别的经验.

解决方法 您可以使用VisualBrush,这是一个按钮的快速示例,其背景设置为stackpanel的缩小版本. <DockPanel> <StackPanel x:Name=”myRect” > <Text@R_365_2419@ Text=”MyTexasdfasdfasdfasdfasdft” Height=”50″ /> <Check@R_365_2419@ IsChecked=”True” /> <Rectangle Fill=”Red” Width=”100″ Height=”100″ /> </StackPanel> <Button> <Button.Background> <VisualBrush TileMode=”None” Viewport=”0,1,1″ Visual=”{Binding ElementName=myRect}” > <VisualBrush.Transform> <ScaleTransform ScaleX=”0.3″ ScaleY=”0.3″ /> </VisualBrush.Transform> </VisualBrush> </Button.Background> </Button> </DockPanel>

编辑:虽然这个解决方案可以复制屏幕上的内容,当隐藏或删除屏幕上的内容时,VisualBrush也是如此.
为了保持图像,有必要将控件呈现给位图.这可以使用RenderTargetBitMap完成

// CenterControl is the target to render,ShowControl is the control to render the CenterControl onto.var rtb = new RenderTargetBitmap((int)CenterControl.ActualWidth,(int)CenterControl.ActualHeight,96,PixelFormats.Pbgra32); rtb.Render(CenterControl); var bgBrush = new ImageBrush(rtb) {Transform = new ScaleTransform(0.1,0.1)}; ShowControl.Background = bgBrush;