在c#中画完线后刷新屏幕
本文关键字:刷新 屏幕 | 更新日期: 2023-09-27 18:00:44
我正在尝试编写一个简单的应用程序,以一定的速度打印一条"移动"的线,这是我第一次使用c#和Windows创建应用程序,我找到了一个帮助我画线的教程,到目前为止我得到了这个:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
namespace ConsoleApplication1
{
class Program
{
[DllImport("User32.dll")]
static extern IntPtr GetDC(IntPtr hwnd);
static void draw(Rectangle r, Brush b, IntPtr hwnd)
{
using(Graphics g = Graphics.FromHdc(hwnd))
{
g.FillRectangle(b, r);
}
}
static void Main(string[] args)
{
int x = 0;
while (true)
{
draw(new Rectangle(x, 0, 50, 1080), Brushes.PaleGoldenrod, GetDC(IntPtr.Zero));
x++;
}
}
}
}
问题是我不知道如何擦除前一行,或者只是在画完一行后刷新屏幕。
欢迎任何帮助。
谢谢!
尝试以下操作:
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;
namespace WinFormDrawGraphics
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
SetStyle(ControlStyles.ResizeRedraw, true);
}
protected override void OnPaint(PaintEventArgs e)
{
// initialization
Graphics g = e.Graphics;
// Create pen.
Pen blackPen = new Pen(Color.Black, 3);
// Create points that define line.
Point point1 = new Point(100, 100);
Point point2 = new Point(500, 100);
// Draw line to screen.
e.Graphics.DrawLine(blackPen, point1, point2);
// add any other graphics drawing...
}
}
}
例如,如果调整窗口大小,或者隐藏窗口并重新显示,它将重新绘制线。
注意:这将用于WinForms GUI应用程序,而不是您创建的控制台应用程序。