2 回答

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>

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>
- 2 回答
- 0 關注
- 401 瀏覽
添加回答
舉報