我正在加载图像层以制作单个图像。我现在正将它们全部堆叠在画布上。我已经设置好了,因此用户可以指定单个图像的最终尺寸,但即使我更改画布的大小,图像也会保留原始尺寸。
我试图在装入图像时修改图像尺寸,但尺寸为NaN,实际尺寸为0,所以我无法在那里更改它们。
我开始认为帆布可能不是那种方式。有关如何剪裁图像以适合特定尺寸的任何建议吗?
canvas1.Children.Clear();
int totalImages = Window1.GetNumberOfImages();
if (drawBackground)
canvas1.Background = new SolidColorBrush(Color.FromArgb(a,r,g,b));
else
canvas1.Background = new SolidColorBrush(Color.FromArgb(0, 0, 0, 0));
for (int i = 0; i < totalImages; i++)
{
Image image = new Image();
image.Source = Window1.GetNextImage(i);
canvas1.Children.Add(image);
}
答案 0 :(得分:3)
对于其他在这里做同样事情的人来说,这是我工作的代码。谢谢Jeffrey!
Image image = new Image();
BitmapSource tempSource = Window1.GetNextImage(i);
CroppedBitmap cb = new CroppedBitmap(tempSource,
new Int32Rect(0, 0,
Math.Min((int)Window1.totalWinWidth, tempSource.PixelWidth),
Math.Min((int)Window1.totalWinHeight, tempSource.PixelHeight)));
image.Source = cb;
canvas1.Children.Add(image);
答案 1 :(得分:1)
要获取画布的当前尺寸,您必须先调用Measure
和Arrange
。这将避免NaN和0。
使用RenderTransform
更改画布显示的图像大小。
我从未尝试裁剪图像,所以我不知道该怎么做,但我看到有一个CroppedBitmap对象。我猜你已经试过了吗?
答案 2 :(得分:0)
在我看来,你应该修改图像源的大小,而不仅仅是画布。 Canvas只是一个容器,它没有能力修改它的子项。