亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

WPF 畫布填充

WPF 畫布填充

C#
慕娘9325324 2021-11-28 20:11:28
我目前有一個帶有 Canvas 的 WPF 窗口是 600 x 400。是否可以縮放或自動放大以使線條盡可能多地占據 600x600?   <Border>          <Canvas x:Name="cMap" Width="600" Height="400">                 <Line X1="5" Y1="5" X2 ="10" Y2="10" StrokeThickness="2" Stroke="Black"/>                 <Line X1="10" Y1="10" X2 ="15" Y2="25" StrokeThickness="2" Stroke="Black"/>          </Canvas>   </Border>我的目的是通過代碼而不是 XAML 以編程方式添加行。
查看完整描述

2 回答

?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

不確定您的確切用例是什么,但您可能會受益于使用ViewBox:


<Border>

    <Viewbox Stretch="Uniform">

        <Canvas x:Name="cMap" Width="15" Height="25">

            <Canvas.LayoutTransform>

                <ScaleTransform />

            </Canvas.LayoutTransform>

            <Line X1="5" Y1="5" X2 ="10" Y2="10" StrokeThickness="2" Stroke="Black"/>

            <Line X1="10" Y1="10" X2 ="15" Y2="25" StrokeThickness="2" Stroke="Black"/>

        </Canvas>

    </Viewbox>

</Border>


查看完整回答
反對 回復 2021-11-28
?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

希望這對你有幫助!


要在代碼中繪制線條,您應該執行以下操作:


Line line = new Line();

    Thickness thickness = new Thickness(101,-11,362,250);

    line.Margin = thickness;

    line.Visibility = System.Windows.Visibility.Visible;

    line.StrokeThickness = 4;

    line.Stroke = System.Windows.Media.Brushes.Black;

    line.X1 = 10;

    line.X2 = 40;

    line.Y1 = 70;

    line.Y2 = 70;

并且不要忘記添加:


myCanvas.Children.Add(line); 

把這些線放在某個地方

要調整畫布大小,請閱讀以下內容:


Canvas 是唯一沒有固有布局特征的面板元素。Canvas 的默認 Height 和 Width 屬性為零,除非它是自動調整其子元素大小的元素的子元素。Canvas 的子元素永遠不會調整大小,它們只是定位在指定的坐標處。這為不需要或不需要固有大小限制或對齊的情況提供了靈活性。對于您希望子內容自動調整大小和對齊的情況,通常最好使用 Grid 元素。


因此,作為解決方案,您可以將其放入 GRID 或使用以下代碼:


public class CanvasAutoSize : Canvas

{

protected override System.Windows.Size MeasureOverride(System.Windows.Size constraint)

{

    base.MeasureOverride(constraint);

    double width = base

        .InternalChildren

        .OfType<UIElement>()

        .Max(i => i.DesiredSize.Width + (double)i.GetValue(Canvas.LeftProperty));


    double height = base

        .InternalChildren

        .OfType<UIElement>()

        .Max(i => i.DesiredSize.Height + (double)i.GetValue(Canvas.TopProperty));


    return new Size(width, height);

}

}

在您的 XAML:


 <local:CanvasAutoSize VerticalAlignment="Top" HorizontalAlignment="Left"></local:CanvasAutoSize>


查看完整回答
反對 回復 2021-11-28
  • 2 回答
  • 0 關注
  • 401 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號