c # Как использовать winforms полноэкранный с System.Graphics? - PullRequest
0 голосов
/ 30 ноября 2018

Мне нужно, чтобы приложение winforms gdi + развернулось на весь экран

Я рисую все элементы интерфейса с помощью этого кода.

e.Graphics.DrawImage(MatheMage.Properties.Resources.ChooseMenu, 0, 300);

И я получаю нечто подобное image1

И если я использую этот код

private void Form1_Load(object sender, EventArgs e)
{
    this.TopMost = true;
    this.FormBorderStyle = FormBorderStyle.None;
    this.WindowState = FormWindowState.Maximized;
}

, я получаю нечто подобное image2

Мне нужно, чтобы все элементы растягивались вместе сокна

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Как вы уже рисуете с графическим объектом, просто используйте метод ScaleTransform.

//save the current Transformation state of the graphics object.
var transState = e.Graphics.Save();

// Setting keepAspectRatio to false will scale your image to full screen.
// setting it to true will fill either the width or the height. you might need to use TranslateTransform method to move the image to the center.
bool keepAspectRatio = false;

// Calculate width and height ratios
// if you currently render everything to 640px/480px, you can take those dimensions instead of the Image size I used to calculate the ratios.
float widthRatio = this.DisplayRectangle.Width / MatheMage.Properties.Resources.ChooseMenu.Width;
float heightRatio = this.DisplayRectangle.Height / MatheMage.Properties.Resources.ChooseMenu.Height;

if(keepAspectratio)
{
    // If aspect ratio shall be kept: choose the smaller scale for both dimensions
    if(widthRatio > heightRatio)
    {
        widthRatio = heightRatio;
    }
    else
    {
        heightRatio = widthRatio;
    }
}

// Scale the graphics object.
e.Graphics.ScaleTransform(widthRatio, heightRatio);

// Draw your stuff as before.
e.Graphics.DrawImage(MatheMage.Properties.Resources.ChooseMenu, 0, 300);

//finally restor the old transformation state of the graphics object.
e.Graphics.Restore(transState);

Надеюсь, что это поможет вам.Помните, что код не проверен.

0 голосов
/ 30 ноября 2018

Попробуйте это в вашем методе загрузки формы после изменения WindowState

this.BackgroundImageLayout = ImageLayout.Stretch;
...