Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: классы в Си++  (Прочитано 17001 раз)
0 Пользователей и 1 Гость смотрят эту тему.
MadMan
Гость
« : 14-05-2004 19:08 » 

надо написать класс, который бы рисовал окружность (в объект передаются - радиус и цвет его)
дайте идею в написании (а то читал про классы ничего не понял!)

спасибо!
Записан
Serega
Гость
« Ответ #1 : 14-05-2004 20:10 » 

Тоесть по сути дела тебе нужна функция рисующая окружность
Тогда надо определиться где ты её хочешь нарисовать
Записан
MadMan
Гость
« Ответ #2 : 16-05-2004 18:29 » 

Serega, под дос
Записан
ysv_
Помогающий

ua
Offline Offline

« Ответ #3 : 17-05-2004 06:54 » 

Какую графическую библиотеку ты используешь? Или по простому на чем пишем (Turbo C++, Borland C++ или что-то другое)?
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #4 : 17-05-2004 16:30 » 

Доброе время суток.
Что ты конкретно не понял про классы?
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
--Zap--
Гость
« Ответ #5 : 17-05-2004 16:35 » 

MadMan А где ты ёе хочешь на рисовать по середине экрана или в случайно выбраном месте???
И  зачем писать класс можно обойтись и функцией помойму:

#define defX 100
#define  defY 100
/*
Эти значения я взял от балды
*/

void round_draw(int iRadious,int  iColor){
       setcolor(iColor);//Устанавливаем цвет линии
       circle(defX,difY,iRadious);//Собственно рисуем окружность =)      
}

З.Ы.
Надеюсь подключать BGI ты умеешь   Отлично
Записан
MadMan
Гость
« Ответ #6 : 17-05-2004 17:40 » 

--Zap--,
Цитата

А где ты ёе хочешь на рисовать

по середине лучше
Цитата

И зачем писать класс можно обойтись и функцией помойму

можно, но мне надо с классом!
Цитата

setcolor(iColor);//Устанавливаем цвет линии

а как залить его (круг)?
Записан
MadMan
Гость
« Ответ #7 : 17-05-2004 17:42 » 

ysv_,
Borland C++
Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 17-05-2004 20:26 » 

Вот быстро сляпанная и концептуально несколько неверная реализация.

Код:
#include <iostream>

class CCircle {
protected:
    int _center_x;
    int _center_y;
    int _radius;
    int _line_color;
    int _fill_color;
public:
    CCircle(int center_x, int center_y, int radius, int line_color, int fill_color);
    virtual void draw(void) = 0;
};

CCircle::CCircle(int center_x, int center_y, int radius, int line_color, int fill_color):
        _center_x(center_x),_center_y(center_y),_radius(radius), _line_color(line_color),
        _fill_color(fill_color)
{}

// Print a message on stdout
class CConsoleCircle : public CCircle {
public:
    CConsoleCircle(int center_x, int center_y, int radius, int line_color, int fill_color);
    virtual void draw(void);
};

CConsoleCircle::CConsoleCircle(int center_x, int center_y, int radius, int line_color, int fill_color) :
    CCircle(center_x,center_y, radius, line_color, fill_color) {}


void CConsoleCircle::draw(void) {
    std::cout << "Drawing a circle!\n" << "Center: ( " << _center_x;
    std::cout << ", " << _center_y << " )\n";
    std::cout << "Line color: " << _line_color << ", Fill color: " << _fill_color;
    std::cout << "\n";
}

int main() {
    CConsoleCircle c(0,0,10, 1,2);
    c.draw();
    return 0;
}

Для того, чтобы адаптировать под свою среду разработки, напиши класс-потомок от CCircle, в котором переопредели метод draw.  Например, метод draw может рисовать средствами BGI.
« Последнее редактирование: 25-11-2007 21:33 от Алексей1153++ » Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
--Zap--
Гость
« Ответ #9 : 18-05-2004 16:11 » 

Цитата: MadMan

а как залить его (круг)?

Вот примерно как я себе представляю как этот класс выглядит:


/*
Эти значения я взял от балды
*/

class  draund{
       // координаты центра окружности
       int X;
       int Y;

       int Radious;       //Радиус окружности
       int Color;       //Цвет линии
       int BgColor; //Цвет заливки
       int Style; //Стиль заливки типа сплощной, штриховка, точками ...
       public:
          draund(int defX, int defY,int iRadious,int iColor,iBgColor,iBStyle)
}

draund::draund(int defX,int defY,int iRadious,int iColor,iBgColor,iBStyle){
setcolor(iColor);//Устанавливаем цвет линии
setfillstyle(iBstyle,iBgColor);//Указываем какой цвет у моей заливли и стиль
pieslice(defX,difY,0,360,iRadious);//Собственно рисуем окружность =)
//Передаем значения в класс
X=defX;
Y=defY;
Radious=iRadious;
Color=iColor;
BgColor=iBgColor;
Style=iBStyle;
}

int main(){
    draund raund(100,100,20,4,2,LINE_FILL);
    /*
     Функция будет выводить окружности с центром в точке (100;100)
     радиусом 20,обромлением красным,заливка будет горизонтальная  
     штриховка зелйным цветом
    */
    return 0;
}


Вроде всё должно работать Ага  а константа LINE_FILL объявленя в хедере <graphics.h>(или <graph.h>) В зависимости от твоего компилятора.

Если что тоже самое написано у npak'а(ну практически) просто я предложил свой вариант
Записан
Serega
Гость
« Ответ #10 : 19-05-2004 12:04 » 

Есть класная книжечка, называется "Компьютерная графика. Полигональные модели"
там рассмотрены многие алгоритмы компьютерной графики, в том числе алгоритм рисования кругов и заливки замкнутых фигур
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines