#c# #image #winforms #background #positioning
#c# #изображение #winforms #фон #позиционирование
Вопрос:
Вот что у меня есть:
var rand = new Random();
var files = Directory.GetFiles("C:/Projects/MOMENTUM/MOMENTUM/pics/", "*.jpg");
Image bgimage = new Bitmap(files[rand.Next(files.Length)]);
BackgroundImage = bgimage;
Rectangle UsedScreen = Screen.FromControl(this).Bounds;
if (UsedScreen.Height / UsedScreen.Width > bgimage.Height / bgimage.Width)
{
//SET IMAGE HEIGHT TO SCREEN HEIGHT
}
else
{
//SET IMAGE WIDTH TO SCREEN WIDTH
}
Как вы видите, я сначала выбираю случайное изображение из определенной папки, а затем устанавливаю его в качестве фонового изображения.
Я хочу, чтобы это приложение работало в полноэкранном режиме. Однако, если я установлю для свойства bgimage ImageLayout значение Zoom, появятся уродливые границы, а если я установлю для него значение stretch, это будет выглядеть ужасно.
Я хочу добиться следующего:
Я получаю текущий используемый размер экрана через границы экрана, а затем настраиваю изображение так, чтобы оно соответствовало экрану без искажений.
Часть изображения будет вырезана, но основная цель состоит в том, чтобы весь экран всегда был заполнен изображением (см. Комментарии в if). Я не знаю, как это сделать, потому что, если я попытаюсь
bgimage.Height = UsedScreen.Height
Я не могу перезаписать высоту изображения.
Есть идеи?
Комментарии:
1. Если оно достаточно велико
BackgroundImageLayout=ImageLayout.None
. В противном случае вам нужно увеличить его..2. Необходимо масштабировать изображение, чтобы оно соответствовало границам.