c# - 如何在拉伸容器时保持画布固定大小
问题描述
我正在尝试为图像制作一个非常简单的编辑器。由于控制面板显示在画布旁边,因此我想在它们之间放置一个边框(尽管我愿意接受像 GridSplitter 这样的建议)。我将画布嵌套在嵌套在边框中的 ScrollViewer 中。当图像加载到画布中时,如果我调整窗口大小,图像会随其他所有内容一起调整大小。由于我正在编辑此图像,因此我想将其保持为原始大小,如果 Canvas 太大,请使用 ScrollViewer 来处理它。我不知道是否更推荐将边框放在控制面板周围。
XAML 代码:
<Border BorderBrush="Black" BorderThickness="2" Grid.Column="2" Grid.Row="0" Grid.RowSpan="10" Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<ScrollViewer x:Name="canvas_RosetteMap" Height="Auto" Width="Auto" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<Canvas Grid.Column="2" HorizontalAlignment="Center" Height="Auto" Grid.Row="0" Grid.RowSpan="10" VerticalAlignment="Center" Width="Auto"/>
</ScrollViewer>
</Border>
解决方案
你应该使用 aGrid
代替。Canvas
不擅长处理大小调整、滚动或类似的事情。这是一个应该与Image
也一起使用的简单示例:
<Border BorderBrush="Black" BorderThickness="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<ScrollViewer x:Name="canvas_RosetteMap" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Visible">
<Grid Width="Auto">
<TextBox Background="Beige" VerticalAlignment="Top" HorizontalAlignment="Left"/>
</Grid>
</ScrollViewer>
</Border>
推荐阅读
- fluentd - gssapi 错误 - 在 fluentd 中使用 webhdfs 时
- javascript - 当输入无效的用户名或密码登录表单时,用户名和密码边框颜色在php中变为红色
- sql - 从两个表中查询数据,只选择修改过的记录
- json - 在ruby中过滤具有不同头值的json
- python - 如何编辑Django的ctime?
- matlab - 如何根据强度找到 ROI 中的像素强度和颜色?
- asp.net-core-2.0 - T 实体不包含 id 的定义
- javascript - 使用 Jquery 将内容从一个 TD 复制到另一个?
- c++ - 将信号从工作类连接到控制器类 - QThreads
- netsh - Windows 10 IOT 4G 网络共享显示“DisabledByOperator”,但适用于 Windows 10 桌面