添加到画布上的图像比画布大
本文关键字:图像 布大 添加 | 更新日期: 2023-09-27 18:11:49
<Grid Name="PlotGrid" Margin="50,50,50,50">
<Grid.RowDefinitions>
<RowDefinition Height="50" />
<RowDefinition Height="500" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
<Canvas Name="canvas" Grid.Row="0" Grid.Column="0" />
<Border Name="firstborder"
Grid.Column="0"
Grid.Row="0"
BorderBrush="Black"
BorderThickness="1">
</Border>
<Border Name="secondborder"
Grid.Column="1"
Grid.Row="0"
BorderBrush="Black"
BorderThickness="1">
</Border>
<Border Name="thirdborder"
Grid.Column="0"
Grid.Row="1"
BorderBrush="Black"
BorderThickness="1">
</Border>
<Border Name="fourthborder"
Grid.Column="1"
Grid.Row="1"
BorderBrush="Black"
BorderThickness="1">
</Border>
</Grid>
我正在动态地将图像添加到上面的画布中,它位于网格单元格内:
try
{
if ((myStream = openFileDialog.OpenFile()) != null)
{
using (myStream)
{
// Insert code to read the stream here.
image1.Source = new BitmapImage(new Uri( openFileDialog.FileName));
canvas.Children.Add(image1);
}
}
}
我的期望是导入的图像将保留在画布和包含画布的网格单元内。但它占据了一个巨大的空间,远远超出了网格单元。如何将导入的图像保持在网格单元的范围内?
你需要设置图像大小,否则它将是全尺寸
image1.Stretch = Stretch.Uniform;
image1.StretchDirection = StretchDirection.Both;
image1.BeginInit();
image1.Source = new BitmapImage(new Uri( openFileDialog.FileName));
image1.Width = canvas.ActualWidth;
image1.Height = canvas.ActualHeight;
image1.EndInit();
您可能还需要添加代码来处理网格的大小调整
也许这行得通:
...
image1.Stretch = Stretch.Uniform;
image1.StretchDirection = StretchDirection.Both;
image1.BeginInit();
image1.Source = new BitmapImage(new Uri( openFileDialog.FileName));
image1.EndInit();
canvas.Children.Add(image1);