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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2011, 15:35   #1
Jim_di_Griz
 
Регистрация: 11.07.2011
Сообщений: 4
По умолчанию GDI+, Регионы

Всем доброго времени суток.
Пишу тетрис, стараюсь двигать фигуры.
Вопрос, по регионам, а точнее их движению.
Мне нужно двигать регион по пикчербоксу, вниз, влево, вправо, и делать это периодически.
Пробовал делать это через Translate, код ниже.
Код:
Region rgn1 = new Region(new Rectangle(0, 0, 60, 20));
            Region rgn2 = new Region(new Rectangle(0, 20, 20, 20));
            rgn1.Union(rgn2);
            pictureBox1.Region = rgn1;
            pictureBox1.BackColor = Color.Red;
            for (int i = 0; i < 4; i++)
            {
                Thread.Sleep(1000);
                rgn1.Translate(0, 10); 
            }
Регион движется но без задержки, он должен три раза сдвинуться, а он оказывается в конечной точке сразу.
Второй вариант, я пробовал сделать это через таймер:
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Region rgn1 = new Region(new Rectangle(0, 0, 60, 20));
        public Form1()
        {
            InitializeComponent();
 
 
            Region rgn2 = new Region(new Rectangle(0, 20, 20, 20));
            rgn1.Union(rgn2);
            pictureBox1.Region = rgn1;
            pictureBox1.BackColor = Color.Red;
 
 
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            rgn1.Translate(0, 10);
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
           timer1.Enabled = true;
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            timer1.Enabled = false;
        }
    }
}
Тут вообще без эмоций, регион остается в начальной точке, и на нажатие кнопок не реагирует.
Конечная цель данных потуг тетрис.
Где делаю ошибку?
Или может есть другие средства для решения этой задачи?
Заранее благодарен.
Jim_di_Griz вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
GDI+ Dimarik Общие вопросы .NET 4 03.05.2010 20:54
GDI+ Недействительные регионы. PLS HELP!!! dreamer21 Общие вопросы C/C++ 4 26.08.2009 17:53
GDI EdNovice Win Api 4 12.02.2008 09:14
DBLookupComboBox - Страна - Регионы - Города IIpopoK БД в Delphi 24 11.02.2008 15:07