2015-07-01 2 views
0

Я пытаюсь написать простое приложение, которое печатает строку «перемещение» с определенной скоростью, я впервые использую C# и Windows для создания приложения, я нашел учебник, помогает мне рисовать линии и до сих пор я получил это:Обновите экран после рисования строки в C#

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++; 
      } 

     } 
    } 
} 

проблема заключается в том, что я не знаю, как удалить предыдущую строку, или просто обновить экран после рисования линии.

Любая помощь приветствуется.

Спасибо!

+1

Короткий ответ, с помощью этого метода «рисования» вы этого не делаете. Эти линии стираются тем, что вы нарисовали сверху. Это может быть сам рабочий стол или другие окна приложений. Когда они перерисовываются, линии стираются. –

+0

Спасибо за ответ, знаете ли вы метод, который я могу использовать для достижения этого? благодаря! – user2465233

+1

Шаг первый: отбросьте учебник и очистите ссылку! Прочитайте событие Paint и Timer Tick – TaW

ответ

0

Попробуйте что-то вроде:

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, а не для консольного приложения, которое вы создали.