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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> И снова массивы 
:(
    Опции темы
4YBAK
Дата 1.3.2006, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Требуется нарисовать все точки из массива точек MyPoints.
Рисовать точку нужно только если она существует.
Почему-то нижеприведенный код отказывается работать:
Код

public class VvodUzlov : Form
{
n=1; // номер узла (точки)
Point[] MyPoints=new Point[100]; //массив в точками (узлами)
void DrawUzel(int x,int y) // метод для рисования узла на панел1
        {
            Graphics g=Graphics.FromHwnd(panel1.Handle);
            g.TranslateTransform(20,265);
            g.ScaleTransform(1,-1);
            g.FillEllipse(Brushes.Red,x*40-5,y*40-5,10,10);
        }


private void button1_Click(object sender, System.EventArgs e)
{
int X=int.Parse(textBox1.text);
int Y=int.Parse(textBox2.text);
MyPoints[n]=new Point(X,Y); // создаем узел (точку)
n++;
panel1.Invalidate(); // и вызываем событие Paint, которое обрабатывается ниже
}

private void panel1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
for(int i=1;i<=MyPoints.Length;i++)
{
if(MyPoints[i]!=null) // здесь выдает ошибку!
DrawUzel(MyPoints[i].X,MyPoints[i].Y);
}
}
}





PM MAIL   Вверх
Exception
Дата 1.3.2006, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 29
Всего: 186



Точка - это не ссылочный тип, а значит null'ем быть не может. Используй проверку на (myPoints[i].X != 0) && (myPoints[i].Y != 0).
Добавлено @ 20:50
А в блок else вставь конструкцию return: насколько я понял, если точка пустая, то и все последующие тоже пустые.
PM   Вверх
4YBAK
Дата 1.3.2006, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Exception @ 1.3.2006, 20:46 Найти цитируемый пост)
Точка - это не ссылочный тип, а значит null'ем быть не может. Используй проверку на (myPoints[i].X != 0) && (myPoints[i].Y != 0).

Эта идея меня посетила в первую очередь. Но кто мешает юзеру ввести точку с координатами (0,0) ?
Вот в этом и облом!
Хотя можно попробовать изначально забить в каждую точку координаты (-1,-1)
for(int i=1;i<=100;i++) MyPoints[i]=new Point(-1,-1);

А потом уже делать (myPoints[i].X >= 0) && (myPoints[i].Y >= 0)
Будем надеяться, сработает... Щас попробую.



PM MAIL   Вверх
4YBAK
Дата 1.3.2006, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Получилось!!!

Ксати, можно поподробнее, что такое ссылочный тип? И какие еще типы бывают?
Ссылочный это всякие int, float, double?
PM MAIL   Вверх
Exception
Дата 1.3.2006, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 29
Всего: 186



Типы в .NET делятся на ссылочные и структурные. Структурными называются все примитивные типы (int, float), структуры и перечисления. Короче, все типы, производные от System.ValueType. Отличия структурных от ссылочных:
1. Память для них выделяется из стека
2. При копировании копируется не ссылка на объект, а его побитовая копия
3. Переменная "убивается" при выходе за область видимости, а не при сборке мусора
4. Структурные типы инициализируются значениями по умолчанию и не могут быть null.
Добавлено @ 22:43
Разумеется, это только основные отличия.
PM   Вверх
Artiom
Дата 2.3.2006, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1031
Регистрация: 11.3.2003
Где: Минск\Баку

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



http://www.rsdn.ru/article/dotnet/values.xml
Тут статья про типы. Довольно подробно


--------------------
Если тебя жизнь трахает, значит, ты ещё живой
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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