gpt4 book ai didi

c# - 事件后在 WPF 中调整形状大小

转载 作者:太空宇宙 更新时间:2023-11-03 14:53:34 25 4
gpt4 key购买 nike

我使用 WPF 在 Office 面板上显示形状。我可以在加载应用程序时调整形状的大小。但如果用户调整包含该形状的面板的大小,我想调整该形状的大小。我的问题是开始时定义的边距在加载后没有改变,所以尺寸保持其初始边距。

我有一个包含 WPF Shape 和调整大小事件处理程序的 UserControl:

private void UserControlA_Resize(object sender, EventArgs e)
{
myWPF.SetSizeOfShape(sizeOfPanel); // I collect sizeOfPanel, and it is OK, it is changed when panel is resized
}

WPF 的 xaml 是:

<Border Name="myShape"  Background="blue" CornerRadius="8" Margin="10,126,139,199" />

WPF .cs 是:

public void SetSizeOfShape(int widthOfPanel)
{
myShape.Margin = new Thickness(widthOfPanel/3, 100, widthOfPanel/6, 100);

SetSizeOfShape 在加载应用程序并正确设置大小时调用 - 但如果更改大小,则会再次调用它,但不会更改显示的边距。

您知道哪里出了问题以及如何改正吗?

----- 编辑 -----我的事件处理程序可能有问题。事实上,如果我通过单击按钮放置事件,它会起作用 - 但如果我使用 Resize(或 sizeChanged)事件它不会:事件被调用,但对形状没有影响。你知道怎么解决吗?

最佳答案

我没有看到 Border Control 的调整大小事件.它可以根据其内容调整大小。也许向我们提供有关您尝试执行的操作的更多详细信息。

public void MyMouseOver()
{
Ellipse myShape = new Ellipse() { Width = 200, Height = 100, Stroke = Brushes.Yellow, };
MyCanvas.Children.Add(myShape);
Canvas.SetTop(myShape,10);
Canvas.SetLeft(myShape,10);

myShape.MouseEnter += MyShape_MouseEnter;
myShape.MouseLeave += MyShape_MouseLeave;
}

private void MyShape_MouseLeave(object sender, MouseEventArgs e)
{
((Ellipse)sender).RenderTransform = new ScaleTransform(1, 1); // return scale to normal
}

private void MyShape_MouseEnter(object sender, MouseEventArgs e)
{
((Ellipse)sender).RenderTransform = new ScaleTransform(1.1, 1.1, Width / 2, Height / 2);
}

关于c# - 事件后在 WPF 中调整形状大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50657147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com