我不想改变图像大小。在创建图像之后,我添加了这个特性。我正在使用Windows (.NET框架)。我用颜料做的东西,有坐标和其他东西。现在我改变它,使它被转换,所以它在一个图片盒中,以获得更好的质量在我的动画。但我只能将picturebox大小调整为小窗口的大小。但我已经把所有的东西都放在全尺寸的窗户上了。现在我只能看到这幅画中适合小窗口的部分,也就是左上角的东西。我需要picturebox和完整的窗口一样大,这里是我的代码:
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)
{
}
}
}发布于 2022-02-25 00:30:11
要在picturebox上使用此代码this.WindowState = FormWindowState.Maximized;,最好也使用此符号,为了将图像填充到窗口pictureBox1.Dock = DockStyle.Fill;中,窗口也必须是无边框this.FormBorderStyle = FormBorderStyle.None;按以下顺序使用它们
this.FormBorderStyle = FormBorderStyle.None;pictureBox1.Dock = DockStyle.Fill;this.WindowState = FormWindowState.Maximized;发布于 2022-02-25 23:56:43
若要停止图像效果,请使用以下命令
首先,转到Form_Load并放入以下代码:
this.KeyPreview = true;在此之后,转到Form事件并在KeyDown中双击并将此代码放入以停止移动图像
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;
}
}
}如果按空格键将停止计时器,并停止图像
如果您想要停止该图像,请自动使用以下命令
private void timer1_Tick(object sender, EventArgs e)
{
cloudone1 = cloudone1 + 2;
if (cloudone1 == 1000)
{
timer1.Enable = false;
}
Invalidate();
}https://stackoverflow.com/questions/71259171
复制相似问题