Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как вызвать перерисовку элемента??? ошибка в коде или неправильный подход? 
:(
    Опции темы
Katshooter
Дата 26.7.2007, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 10.6.2007

Репутация: нет
Всего: 1



В обработчике клика мышкой должен рисоваться квадратик, не получаеться его прорисовать...
Код

 public partial class Form2 : Form
    {
        int width, height, min, cnt;
        Rectangle R;
        int[][,] mas;
        public BufferedGraphics bGr;
        public BufferedGraphicsContext bGrc;
        public Form2(int w,int h,int m,int c)
        {
            InitializeComponent();
            width = w;
            height = h;
            min = m;
            cnt = c;
            mas = new int[cnt][,];
            this.MouseClick += new MouseEventHandler(Form2_MouseClick);
            this.panel1.Paint += new PaintEventHandler(panel1_Paint);

            bGrc = BufferedGraphicsManager.Current;
            bGrc.MaximumBuffer = new Size(this.panel1.Width + 1, this.panel1.Height + 1);
            bGr = bGrc.Allocate(this.CreateGraphics(), new Rectangle(0, 0, this.panel1.Width, this.panel1.Height));
            bGr.Graphics.Clear(Color.White); 
            for (int i = 0; i < width+1; i++)
            {
                bGr.Graphics.DrawLine(Pens.Black, this.panel1.Width / width * i, 0, this.panel1.Width / width * i, this.panel1.Height);
            }
            for (int i = 0; i < height + 1; i++)
            {
                bGr.Graphics.DrawLine(Pens.Black, 0, this.panel1.Height / height * i, this.panel1.Width, this.panel1.Height / height * i);
            }
        }
        void panel1_Paint(object sender, PaintEventArgs e)
        {
            bGr.Render(e.Graphics);
        }
        void Form2_MouseClick(object sender, MouseEventArgs e)
        {
            for (int i = 0; i < width; i++)
            {
                if (e.X >= this.panel1.Width / width * i && e.X > this.panel1.Width / width * (i + 1))
                {
                     for (int j = 0; j < height; j++)
                        {
                            if (e.Y >= this.panel1.Height / height * i && e.Y > this.panel1.Height / height * (i + 1))
                            {
                                mas[this.listBox1.SelectedIndex][i, j] = 1;
                                bGr.Graphics.FillRectangle(Brushes.Black, this.panel1.Width / width * i, this.panel1.Height / height * i, this.panel1.Width / width * (i + 1), this.panel1.Height / height * (i + 1));   
                                bGr.Render(Graphics.FromHwnd(this.panel1.Handle));
                            }
                        }             
                }
            }
        }

    }
}


может ошибка в коде, а может вообще подход не стой стороны.... подскажите плиз...

Это сообщение отредактировал(а) Katshooter - 26.7.2007, 13:18
PM MAIL   Вверх
mr.DUDA
Дата 28.7.2007, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



А если по-простому:
Код
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsApplication3
{
    public partial class Form1 : Form
    {
        List<Rectangle> _rectangles = new List<Rectangle>();

        public Form1()
        {
            InitializeComponent();
        }

        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            foreach (Rectangle rect in _rectangles)
                e.Graphics.FillRectangle(Brushes.Red, rect);
        }

        private void panel1_MouseClick(object sender, MouseEventArgs e)
        {
            _rectangles.Add(new Rectangle(e.Location, new Size(50, 50)));
            Refresh();
        }
    }
}


Добавлено через 1 минуту и 19 секунд
Цитата(Katshooter @  26.7.2007,  13:07 Найти цитируемый пост)
 mas[this.listBox1.SelectedIndex][i, j] = 1;

З.Ы. а причём там листбокс ? и что за загадочный массив ?



--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0677 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.