Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2013, 17:37   #11
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

таймер работает со интервалом не кратным разрешению системного таймера, обычно это 16мс.
+ так же если код выполняется дольше этих 16мс, то соответственно нужные интервалы так же не будут достигнуты.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.06.2013, 17:47   #12
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Зачем постоянно пересоздавать битмап ? я ведь такого не говорил ) хотя я конечно не подумал указать, что создавать вместе с формой стоит. Да и вообще почти никакие объекты не стоит создавать многократно, если их требуется постоянно использовать. Ну а даблбуферед это как водится, постоянно надо включать для таких штук, и в дельфи ведь также.
Код:
namespace graphic3
{
    public partial class Form1 : Form
    {
        int fX; // сдвиг кругов
        Image SecondBuf;
        Graphics G;
        SolidBrush redBrush = new SolidBrush(Color.Red);
        SolidBrush blueBrush = new SolidBrush(Color.Blue);
        public Form1()
        {

            InitializeComponent();
            timer1.Interval = 10;
            timer1.Enabled = true;
            SecondBuf = new Bitmap(this.Width, this.Height);
            G = Graphics.FromImage(SecondBuf);
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            fX++;
            Invalidate();
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
           
            //рисуем фон и 2 круга
            G.FillRectangle(redBrush, 0, 0, this.Width, this.Height);
            G.FillEllipse(blueBrush, fX, 50, 100, 100);
            G.FillEllipse(blueBrush, fX, 250, 100, 100);

            e.Graphics.DrawImage(SecondBuf,0,0);
        }
    }
}
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c# рисование на форме world12_tk Помощь студентам 5 03.09.2012 14:41
Рисование на форме Dissembler7 Помощь студентам 2 17.03.2012 22:43
Рисование на форме. (*_*) Общие вопросы C/C++ 1 22.09.2009 13:06
рисование на форме Kostua Помощь студентам 2 26.07.2008 16:24
Рисование на форме niva622 Помощь студентам 4 18.01.2007 09:34