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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2010, 02:02   #1
_Studentka_
Пользователь
 
Аватар для _Studentka_
 
Регистрация: 03.11.2009
Сообщений: 24
По умолчанию Как создать массив из цветов?

Нужно создать массив, кооторый будет состоять из цветов. Я создаю вот так:
Color [] myColor = new MyColor[]{blue,black}
но пишет,что ошибка(((
_Studentka_ вне форума Ответить с цитированием
Старый 05.04.2010, 02:09   #2
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Вот рабочий вариант:

Код:
Color[] myColor = new Color[] { Color.Blue, Color.Black };
И код когда выкладываешь в теги помещай. Выделяешь код и жмёшь куда показано красной стрелочкой

Последний раз редактировалось Casper-SC; 05.04.2010 в 02:13.
Casper-SC вне форума Ответить с цитированием
Старый 05.04.2010, 02:16   #3
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

попробуй так:
Код:
Color[] myColor = new Color[]{Color.Blue,Color.Black};
upd: пардон, не заметил ))
Life if about choices
Make the right choice

Последний раз редактировалось TaTT DoGG; 05.04.2010 в 02:21.
TaTT DoGG вне форума Ответить с цитированием
Старый 05.04.2010, 02:36   #4
_Studentka_
Пользователь
 
Аватар для _Studentka_
 
Регистрация: 03.11.2009
Сообщений: 24
По умолчанию

Получилось.Спасибо. Буду в теги помещать.

Можно еще вопрос,пожалуйста??

Мне вот подсказали хорошую идею для смены цвета линии. Вот алгоритм цитирую:"Я бы сделал так.Создать два списка:LIst<radiobuttоn>rblist и List<color>clist.RadioButtоn помещены в GroupBox,чтоб можно было выбрать только один.
У всех RadioButtоn есть событие CheckedChanged,в качестве обработчика которым присвоена ф-ция CheckedRadioButton()

Код:
public void CheckedRadioButton() 
{ 
for(int i 0; i < rblist.Count; i ++) 
{ 
if(lblist[ i ].Checked==true) 
pen.Color=clist[ i ]; 
} 
this.Invalidate();//перерисовали форму 
}
При клике на RadioButton в этой ф-ции происходит перебор массива rblist.Находится индекс выбранного радиобаттона и по этому индексу выбирается Color из clist.Присваивается лобальному pen и даётся команда перерисовать окно.
А уже в обработчике Paint формы написать
graphicsobj.DrawLine(myPen, 20, 20, 210, 200);
Теперь форма будет перерисовываться при выборе радиобаттона,и перерисовываться будет линия с нужным цветом

И я начинаю писать код:

u
Код:
sing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication5
{
    public partial class Form1 : Form
    {
        RadioButton [] array = new RadioButton[2];
        Color[] color = new Color[] {Color.Black,Color.Blue};
        Graphics graphicsobj;
        
        Pen myPen = new Pen(System.Drawing.Color.Red, 5);
        public Form1()
        {
            InitializeComponent();
            graphicsobj = this.CreateGraphics();
            
        }

        public void CheckedRadioButton()
        {
            for (int i = 0; i < array.Length; i++)
            {
                if (array[i].Checked == true)
                    this.myPen.Color = color[i];
            }
            this.Invalidate();
        }
               

        private void radioButton4_CheckedChanged(object sender, EventArgs e)
        {
            graphicsobj.DrawLine(myPen, 20, 20, 210, 200);
        }
Цвет линии не меняется!! И в чем моя ошибка??? Подскажите,пожалуйста. Цвет,как я задала по умолчанию красным, таким он и остался((
_Studentka_ вне форума Ответить с цитированием
Старый 05.04.2010, 03:12   #5
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию



Код:
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;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        RadioButton[] Array;
        Color[] color = new Color[] {Color.Black,Color.Blue};
        Graphics graphicsobj;
        
        Pen myPen = new Pen(System.Drawing.Color.Red, 5);
        public Form1()
        {
            InitializeComponent();
            RadioButton[] array = { this.radioButton1, this.radioButton2 } ;
            Array = array; //ссылаемся на массив, чтобы он был виден в обработчике события "CheckedRadioButton"
            graphicsobj = this.CreateGraphics();

            //каждый RadioButton в GroupBox'e подписываем на событие "CheckedRadioButton"
            foreach (RadioButton control in groupBox1.Controls)
            {
                control.CheckedChanged += new EventHandler(CheckedRadioButton);
            }
            
        }

        public void CheckedRadioButton(object sender, EventArgs e)
        {
            
            for (int i = 0; i < Array.Length; i++)
            {
                if (Array[i].Checked == true)
                    this.myPen.Color = color[i];
            }
           // this.Refresh();
            graphicsobj.DrawLine(myPen, 20, 20, 210, 200);
        }
              
    }
}
Ошибка 1: Ты просто создавала массив из RadioButton'ов никак не связанный с RadioButton'ами на форме.
Ошибка 2: this.Invalidate(); с использованием этого, у меня помоему линии не рисовались

А ты что вообще пишешь? Линии какие-то

Жаль я не в Киеве живу

Последний раз редактировалось Casper-SC; 05.04.2010 в 03:23.
Casper-SC вне форума Ответить с цитированием
Старый 05.04.2010, 09:57   #6
_Studentka_
Пользователь
 
Аватар для _Studentka_
 
Регистрация: 03.11.2009
Сообщений: 24
По умолчанию

Спасибо большое)))


Пишу программу,которая рисует линию. Пользователь сам выбирает для нее цвет!! Когда линия уже нарисована нужно,чтобы за пользователем осталась возможность изменить цвет линии. Это я хотела реализовать с помощью цикла:
Код:
for (int i = 0; i < Array.Length; i++)
            {
                if (Array[i].Checked == true)
                    this.myPen.Color = color[i];
            }
Мне нужно,чтобы функция graphicsobj.DrawLine(myPen,20,20,21 0,200) была в другом радиобатоне и в другом гроупбоксе. Просто я ведь потом добавлю еще функции в программу: рисование элипса и т.д. Мне нужно, чтобы рисовало линию не сразу после цикла, а в отдельном радиобатоне,который будет отвечать за рисование линии. И когда я нарисовала уже линию и захотела изменить ее цвет,тоесть нажать второй раз другой радиобатон с другим цветом, то линия осталась прежнего цвета. Не пойму почему(((

Последний раз редактировалось _Studentka_; 05.04.2010 в 10:13.
_Studentka_ вне форума Ответить с цитированием
Старый 05.04.2010, 11:53   #7
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Хм... не очень понял... вы про области видимости? Если вы хотите обращаться из разных функций к одной и тойже переменной.. обьявите ее порядком выше..
Код:
int a=0;
void a()
{
a=2;
}
void b(int c)
{
a=c;
}
А линия должна перерисоваться? проверьте дебагером что в массиве чеков Ваших лежит...возможно координаты повтороно закрашивания несовпадают...
+ ваш код просто меняет цвет линии, а перекрашивать кто будет?) преведущая тема...
dampirik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать огромный массив? fatesmile Общие вопросы Delphi 17 18.01.2010 14:19
как создать массив lg12 Помощь студентам 4 17.08.2009 13:50
Как создать массив-константу из записей SNUPY Общие вопросы Delphi 3 19.03.2009 21:11
Подскажите, как создать динамический массив? snaem Общие вопросы .NET 9 14.05.2008 08:52
Перевод картинки в двухмерный массив RGB цветов Alar Общие вопросы Delphi 8 09.08.2007 14:24