【问题标题】:How to overlap WPF Images如何重叠 WPF 图像
【发布时间】:2020-03-31 01:52:57
【问题描述】:

有没有办法重叠说三个图像让它们重叠。我有一个案例,我将顶部元素带到顶部,但它显示的是底层而不是第二层。

这就是我的意思:

应该是这样的:

它的代码:

// Bottom Box
this.BottomBox.BackColor = Color.Transparent;
this.BottomBox.BackgroundImage = Resource.BottomBox;
this.BottomBox.Name = "BottomBox";
// Middle Box
this.Middle.BackColor = Color.Transparent;
this.Middle.BackgroundImage = Resource.MiddleBox;
this.Middle.Parent = BottomBox;
this.Middle.Name = "Middle";
// Top Box
this.TopBox.BackkColor = Color.Transparent;
this.TopBox.BackgroundImage = Resource.TopBox;
this.TopBox.Parent = MiddleBox;
this.TopBox.Name = "TopBox";

【问题讨论】:

  • 将您的图片放在Canvas 中,这样您就可以通过附加属性完全控制定位。
  • @BradleyUffner 会在 IntitializeComponent 函数中完成吗?
  • 我会直接在 XAML 中进行。 WPF 中的代码隐藏几乎总是会导致更多问题,恕我直言。
  • @BradleyUffner 我没有 XAML 文件我有一个 Designer.cs 文件和一个 .resx 文件
  • @BradleyUffner 很奇怪,当我在设计器中添加画布时,它是灰色的

标签: c# wpf


【解决方案1】:

在 WPF 中重叠控件/视图(图像等)的最简单方法是将它们放在 Canvas 或 Grid 中...

在 Canvas 中,您可以使用附加属性 Canvas.TopCanvas.Left 更改相对位置。

在网格中,您可以使用边距更改它们的相对位置...

您可以在 InitializeComponent 方法下方的视图构造器中执行此操作。

示例代码:

// Bottom Box
        this.BottomBox.BackColor = Color.Transparent;
        this.BottomBox.BackgroundImage = Resource.BottomBox;
        this.BottomBox.Name = "BottomBox";
        // Middle Box
        this.Middle.BackColor = Color.Transparent;
        this.Middle.BackgroundImage = Resource.MiddleBox;
        this.Middle.Parent = BottomBox;
        this.Middle.Name = "Middle";
        // Top Box
        this.TopBox.BackkColor = Color.Transparent;
        this.TopBox.BackgroundImage = Resource.TopBox;
        this.TopBox.Parent = MiddleBox;
        this.TopBox.Name = "TopBox";          

        var canvas = new Canvas();
        canvas.Children.Add(this.BottomBox);
        canvas.Children.Add(this.TopBox);
        canvas.Children.Add(this.Middle);
        Canvas.SetLeft(this.BottomBox, 50);
        Canvas.SetTop(this.BottomBox, 100);
        Canvas.SetLeft(this.Middle, 50);
        Canvas.SetTop(this.Middle, 50);
        Canvas.SetLeft(this.TopBox, 50);
        Canvas.SetTop(this.TopBox, 0);

        //put canvas as the main element to display in the view

如果您有任何其他问题,请尝试并发表评论。

【讨论】:

  • 你能举例说明如何修改我的代码来做到这一点吗?
  • 这行不通,因为那些是图片框的。嗯
  • 您确定要构建 WPF 应用程序吗?
  • 这是一个 Windows 窗体。这就是为什么我在看这个:stackoverflow.com/questions/11412169/… 但它没有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 2019-02-14
  • 2016-03-27
  • 2011-08-23
  • 1970-01-01
  • 2019-08-16
相关资源
最近更新 更多