首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#调整图片框大小以适应窗口的全屏版本

C#调整图片框大小以适应窗口的全屏版本
EN

Stack Overflow用户
提问于 2022-02-24 22:53:24
回答 2查看 152关注 0票数 -1

我不想改变图像大小。在创建图像之后,我添加了这个特性。我正在使用Windows (.NET框架)。我用颜料做的东西,有坐标和其他东西。现在我改变它,使它被转换,所以它在一个图片盒中,以获得更好的质量在我的动画。但我只能将picturebox大小调整为小窗口的大小。但我已经把所有的东西都放在全尺寸的窗户上了。现在我只能看到这幅画中适合小窗口的部分,也就是左上角的东西。我需要picturebox和完整的窗口一样大,这里是我的代码:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing.Drawing2D;

namespace France
{
    public partial class Form1 : Form
    {
        int cloudone1, cloudone2, cloudone3, cloudtwo1, cloudtwo2, cloudtwo3, cloudthree1, cloudthree2, cloudthree3;
        Bitmap bmp;
        public Form1()
        {
            InitializeComponent();
            cloudone1 = 0;
            cloudone2 = 50;
            cloudone3 = 100;
            cloudtwo1 = 400;
            cloudtwo2 = 450;
            cloudtwo3 = 500;
            cloudthree1 = 800;
            cloudthree2 = 850;
            cloudthree3 = 900;
            bmp = new Bitmap(this.Width, this.Height);
            this.FormBorderStyle = FormBorderStyle.None;
            pictureBox1.Dock = DockStyle.Fill;
            this.WindowState = FormWindowState.Maximized;
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = Graphics.FromImage(bmp);
            g.Clear(Color.Transparent);
            g.SmoothingMode = SmoothingMode.AntiAlias;
            Pen BlackP = new Pen(Color.Black, 4);
            PointF[] Triangle = new PointF[4];
            g.FillRectangle(Brushes.LightBlue, 0, 0, 1280, 660);
            g.FillRectangle(Brushes.Green, 0, 500, 1280, 660);
            g.FillEllipse(Brushes.Yellow, 1100, 50, 100, 100); // Sun (middle of sun is 1150, 100)
            g.DrawLine(Pens.Yellow, 1075, 100, 1000, 100);
            g.DrawLine(Pens.Yellow, 1225, 100, 1300, 100);
            g.DrawLine(Pens.Yellow, 1150, 175, 1150, 250);
            g.DrawLine(Pens.Yellow, 1150, 25, 1150, 0);
            g.DrawLine(Pens.Yellow, 1100, 150, 1050, 200);
            g.DrawLine(Pens.Yellow, 1200, 150, 1250, 200);
            g.DrawLine(Pens.Yellow, 1100, 50, 1050, 4);
            g.DrawLine(Pens.Yellow, 1200, 50, 1250, 4); // Sun rays
            g.DrawLine(BlackP, 30, 550, 65, 470); // Eiffel Bottom Left Outer Line
            g.DrawLine(BlackP, 50, 550, 85, 470); // Eiffel Bottom Left Inner Line
            g.DrawLine(BlackP, 70, 459, 85, 409); // Eiffel Middle Left Outer Line
            g.DrawLine(BlackP, 90, 459, 105, 409); // Eiffel Middle Left Inner Line
            g.DrawLine(BlackP, 107, 400, 110, 368); // Eiffel Top Left Inner Line
            g.DrawLine(BlackP, 88, 400, 100, 325); // Eiffel Top (Bottom Half) Left Outer Line
            g.DrawLine(BlackP, 100, 325, 105, 250); // Eiffel Top (Top Half) Left Outer Line

            g.DrawLine(BlackP, 190, 550, 155, 470); // Eiffel Bottom Right Outer Line
            g.DrawLine(BlackP, 170, 550, 135, 470); // Eiffel Bottom Right Inner Line
            g.DrawLine(BlackP, 150, 459, 135, 409); // Eiffel Middle Right Outer Line
            g.DrawLine(BlackP, 130, 459, 115, 409); // Eiffel Middle Right Inner Line
            g.DrawLine(BlackP, 113, 400, 110, 368); // Eiffel Top Right Inner Line
            g.DrawLine(BlackP, 132, 400, 120, 325); // Eiffel Top (Bottom Half) Right OuterLine
            g.DrawLine(BlackP, 120, 325, 115, 250); // Eiffel Top (Top Half) Right Outer Line

            g.DrawLine(BlackP, 60, 485, 160, 485); // Eiffel Bottom Horizontal Line
            g.DrawLine(BlackP, 80, 424, 140, 424); // Eiffel Middle Horizontal Line
            g.DrawLine(BlackP, 100, 260, 120, 260); // Eiffel Top (Bottom) Horizontal Line
            g.DrawLine(BlackP, 100, 250, 120, 250); // Eiffel Top (Top) Horizontal Line

            g.DrawLine(BlackP, 110, 250, 110, 220); // Eiffel Top Vertical Line

            g.DrawRectangle(BlackP, 27, 550, 23, 15); // Eiffel Bottom Left Base Box
            g.DrawRectangle(BlackP, 170, 550, 23, 15); // Eiffel Bottom Right Base Box
            g.DrawRectangle(BlackP, 60, 459, 100, 11); // Eiffel Bottom/Middle Seperator Box
            g.DrawRectangle(BlackP, 80, 400, 60, 9); // Eiffel Middle/Top Seperator Box

            g.DrawArc(BlackP, 67, 495, 86, 35, 180, 180); // Eiffel Bottom Arch

            g.DrawLine(BlackP, 170, 550, 175, 515); // Bottom Right Crosses
            g.DrawLine(BlackP, 175, 515, 142, 485); //
            g.DrawLine(BlackP, 190, 550, 155, 515); //
            g.DrawLine(BlackP, 155, 515, 160, 485); //

            g.DrawLine(BlackP, 50, 550, 45, 515); // Bottom Left Crosses
            g.DrawLine(BlackP, 45, 515, 78, 485); //
            g.DrawLine(BlackP, 30, 550, 65, 515); //
            g.DrawLine(BlackP, 65, 515, 60, 485); // ____

            g.DrawLine(BlackP, 70, 459, 95, 440); // Middle Left Crosses
            g.DrawLine(BlackP, 95, 440, 80, 425); //
            g.DrawLine(BlackP, 90, 459, 75, 437); //
            g.DrawLine(BlackP, 75, 437, 100, 426); // ____

            g.DrawLine(BlackP, 150, 459, 125, 440); // Middle Right Crosses
            g.DrawLine(BlackP, 125, 440, 140, 425); //
            g.DrawLine(BlackP, 130, 459, 145, 440); //
            g.DrawLine(BlackP, 145, 440, 120, 425); // ____

            g.DrawLine(BlackP, 88, 400, 124, 345); // Top crosses
            g.DrawLine(BlackP, 132, 400, 96, 345); //
            g.DrawLine(BlackP, 96, 345, 120, 320); //
            g.DrawLine(BlackP, 124, 345, 100, 320); //
            g.DrawLine(BlackP, 100, 320, 118, 295); //
            g.DrawLine(BlackP, 120, 320, 102, 295); //
            g.DrawLine(BlackP, 102, 295, 118, 275); //
            g.DrawLine(BlackP, 118, 295, 102, 275); //
            g.DrawLine(BlackP, 102, 275, 118, 260); //
            g.DrawLine(BlackP, 118, 275, 102, 260); // ____
            g.FillEllipse(Brushes.LightGray, cloudone1, 10, 75, 50); // Cloud one
            g.FillEllipse(Brushes.LightGray, cloudone2, 20, 100, 50); //
            g.FillEllipse(Brushes.LightGray, cloudone3, 5, 100, 50); //  ____
            g.FillEllipse(Brushes.LightGray, cloudtwo1, 55, 75, 50); // Cloud two
            g.FillEllipse(Brushes.LightGray, cloudtwo2, 45, 100, 50); //
            g.FillEllipse(Brushes.LightGray, cloudtwo3, 50, 100, 50); //  ____
            g.FillEllipse(Brushes.LightGray, cloudthree1, 45, 75, 50); // Cloud three
            g.FillEllipse(Brushes.LightGray, cloudthree2, 40, 100, 50); //
            g.FillEllipse(Brushes.LightGray, cloudthree3, 35, 100, 50); //  ____

            Triangle[0] = new PointF(1100, 200);
            Triangle[1] = new PointF(1175, 50);
            Triangle[2] = new PointF(1250, 200);
            Triangle[3] = new PointF(1100, 200);
            //g.FillPolygon(Brushes.Purple, Triangle);
            pictureBox1.Image = bmp;
            g.Dispose();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            cloudone1 = cloudone1 + 2;
            if (cloudone1 == 1000)
            {
                cloudone1 = 0;
            }
            Invalidate();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}
EN

回答 2

Stack Overflow用户

发布于 2022-02-25 00:30:11

要在picturebox上使用此代码this.WindowState = FormWindowState.Maximized;,最好也使用此符号,为了将图像填充到窗口pictureBox1.Dock = DockStyle.Fill;中,窗口也必须是无边框this.FormBorderStyle = FormBorderStyle.None;按以下顺序使用它们

  1. this.FormBorderStyle = FormBorderStyle.None;
  2. pictureBox1.Dock = DockStyle.Fill;
  3. this.WindowState = FormWindowState.Maximized;
票数 0
EN

Stack Overflow用户

发布于 2022-02-25 23:56:43

若要停止图像效果,请使用以下命令

首先,转到Form_Load并放入以下代码:

  • this.KeyPreview = true;

在此之后,转到Form事件并在KeyDown中双击并将此代码放入以停止移动图像

代码语言:javascript
复制
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
      if (e.KeyCode == Keys.Space)
      {
          if(timer1.Enable == true)
          {
              timer1.Enabled = false;
              return;
          }
          if(timer1.Enable == false)
          {
              timer1.Enabled = true;
              return;
          }
      }
}

如果按空格键将停止计时器,并停止图像

如果您想要停止该图像,请自动使用以下命令

代码语言:javascript
复制
private void timer1_Tick(object sender, EventArgs e)
        {
            cloudone1 = cloudone1 + 2;
            if (cloudone1 == 1000)
            {
                timer1.Enable = false;
            }
            Invalidate();
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71259171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档