我創建了一個模擬時鐘,可以根據實時正常工作。使用面板繪畫事件時圖形閃爍
我不想讓你爲我解決它 - 我的代碼已經在工作,但它閃爍很多,而且我的知識有限,我無法確定究竟是什麼,我需要改變停止閃爍。
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 ClockAndStuff
{
public partial class TheName : Form
{
public TheName()
{
InitializeComponent();
timer1.Start();
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
Graphics surfaceBckg;
Graphics surfaceMin;
Graphics surfaceH;
Graphics surfaceSec;
Pen penMin = new Pen(Color.Pink,2);
Pen penH = new Pen(Color.Red,3);
Pen penSec = new Pen(Color.DeepPink,1);
Pen black = new Pen(Color.Black, 4F);
surfaceBckg = panel1.CreateGraphics();
surfaceBckg.TranslateTransform(250, 250);
surfaceBckg.DrawEllipse(black,-220,-220,440,440);
surfaceMin = panel1.CreateGraphics();
surfaceMin.TranslateTransform(250, 250);
surfaceMin.RotateTransform(6 * DateTime.Now.Minute);
surfaceH = panel1.CreateGraphics();
surfaceH.TranslateTransform(250, 250);
surfaceH.RotateTransform(30 * DateTime.Now.Hour);
surfaceSec = panel1.CreateGraphics();
surfaceSec.TranslateTransform(250, 250);
surfaceSec.RotateTransform(6 * DateTime.Now.Second);
surfaceMin.DrawLine(penMin, 0, 0, 0, -200);
surfaceH.DrawLine(penH, 0, 0, 0, -120);
surfaceSec.DrawLine(penSec, 0, 0, 1, -180);
}
private void timer1_Tick(object sender, EventArgs e)
{
panel1.Refresh();
}
}
}
根據我的任務,這是正確的,但我不禁要想,必須有更好的方式來做到這一點。
我不是C#還大,所以如果你能給我的代碼示例作爲一個答案有更大的可能性,我就可以去了解它...
timer_tick被多久調用一次? – rene 2015-01-04 11:15:34
你可以找到很多解決方案,像[this](http://stackoverflow.com/questions/16882921/how-to-fix-panel-flickering-when-redrawing),[this](http://stackoverflow.com/問題/ 8046560/how-to-stop-flickering -c-sharp-winforms)或[this](http://stackoverflow.com/questions/4777135/how-can-i-draw-on-panel-so-it -does-not-blink) – Grundy 2015-01-04 11:18:52
@Grundy我已經看到了所有這些鏈接,但我根本無法確定如何使用它們來解決我的問題,這就是爲什麼我再次問** **的具體細節我的問題 – Keashi 2015-01-04 11:31:47