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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2010, 16:29   #1
satanclaus
Пользователь
 
Регистрация: 05.10.2009
Сообщений: 15
По умолчанию Работа з графикой

Исполнить задание на язике программирования Си для графического режима 640х480 пикселей, 16 цветов.

Вопрос: как в ciбілдере задать етот режим? ето что то типа канви с разрешением 640*480??? и как задать 16 цветов, как нарисовать треугольник именно равносторонний, так как я понял то сначала нужно нарисовать треугольник залитий красний а на нем залитый белый??????
Изображения
Тип файла: jpg Снимок.JPG (12.6 Кб, 121 просмотров)

Последний раз редактировалось satanclaus; 05.07.2010 в 16:33.
satanclaus вне форума Ответить с цитированием
Старый 05.07.2010, 16:31   #2
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Наработки есть? Показывайте.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 05.07.2010, 16:37   #3
satanclaus
Пользователь
 
Регистрация: 05.10.2009
Сообщений: 15
По умолчанию

нашол как нарисовать просто треугольник, интересует что ето за графический режим которий описан в первом посте???

Код:
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#define PATCHTODRIVER "d:\\borlandc\\bgi\\"
int main(void)
{
   /* request auto detection */
   int gdriver = DETECT, gmode, errorcode;
   /* initialize graphics mode */
   initgraph(&gdriver, &gmode, PATCHTODRIVER);

   /* read result of initialization */
   errorcode = graphresult();

   if (errorcode != grOk)  /* an error occurred */
   {
      printf("Graphics error: %s\n", grapherrormsg(errorcode));
      printf("Press any key to halt:");
      getch();
      exit(1);             /* return with error code */
   }

   /* draw a line */
   line(100, 100, 300, 100);
   line(300, 100, 200, 300);
   line(200, 300, 100, 100);
   circle(320,240,100);


   /* clean up */
   getch();
   closegraph();
   return 0;
}
satanclaus вне форума Ответить с цитированием
Старый 05.07.2010, 16:41   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

попробуй присвоить
gmode=5
это режим MCGAHi 640x480
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.07.2010, 16:50   #5
satanclaus
Пользователь
 
Регистрация: 05.10.2009
Сообщений: 15
По умолчанию

так ето пример просто нужно сделать с формой, а в графике я не шарю абсолютно
satanclaus вне форума Ответить с цитированием
Старый 05.07.2010, 16:57   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так тебе нужно это нарисовать на форме?
(А ну да... Я чет подумал что СБуилдер под ДОС когда-то выпускали...)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.07.2010, 17:02   #7
satanclaus
Пользователь
 
Регистрация: 05.10.2009
Сообщений: 15
По умолчанию

просто завтра практику здавать и нужно срочно, сам докумекать неуспею(((
satanclaus вне форума Ответить с цитированием
Старый 05.07.2010, 17:23   #8
Snejnaya
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 219
По умолчанию

satanclaus

Ты уверен, что тебе нужно нарисовать треугольник НА ФОРМЕ? Может быть, вы в Си-билдере работаете, но в консольке, а не с формами?


Код:
 int gdriver = DETECT, gmode, errorcode;
   /* initialize graphics mode */
   initgraph(&gdriver, &gmode, PATCHTODRIVER);
этими строчками ты инициализируешь драйвер, чтобы была возможность работать с графикой.

Если работать на форме, ничего инициализировать не нужно.

На форме твой треугольник рисоваться будет очень просто:
Код:
Form1->Canvas->Pen->Color=clMaroon;
Form1->Canvas->MoveTo(100,100);
Form1->Canvas->LineTo(300,100);
Form1->Canvas->LineTo(200,300);
Form1->Canvas->LineTo(100,100);
Form1->Canvas->FloodFill(105,105,clMaroon,1);
ну и размеры самой формы можно задать любые -и 640 на 480 в том числе.
Snejnaya вне форума Ответить с цитированием
Старый 05.07.2010, 17:45   #9
satanclaus
Пользователь
 
Регистрация: 05.10.2009
Сообщений: 15
По умолчанию

Нужно вот такоє нарисовать скорее всего не на форме, а в PaintBox
Изображения
Тип файла: jpg Снимок.JPG (12.6 Кб, 122 просмотров)
satanclaus вне форума Ответить с цитированием
Старый 06.07.2010, 03:18   #10
satanclaus
Пользователь
 
Регистрация: 05.10.2009
Сообщений: 15
По умолчанию

Покачто сделал вот так! так как я понял то нужносначала нарисовать залитый красный равносторонний тр-ик, а в нем белый равност. но меньше. Координаты подбирал вручную.

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

Так как я понял ето надо делать через описаную или вписаную окружность. Например я ввожу длину стороны большого треуголиьника, бо формуле r=(sqrt(3)/6)*t нахожу радиус вписаной окружности или по формуле r=(sqrt(3)/3)*t описаной. потом уменьшаю радиу и рисую белій треугольник.

ВОПРОС. как мне найти координаты вершин треугольника когда я знаю радиус и координаты центра?
и правильный ли у меня алгоритм?

Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{

 Form1->Canvas->Brush->Color=clMaroon;


TPoint points[3];
  points[0] = Point(200,110);
  points[1] = Point(100,300);
  points[2] = Point(300,300);
  Form1->Canvas->Polygon(points, 3);


}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
   Form1->Canvas->Brush->Color=clWhite;

     TPoint points[3];
  points[0] = Point(200,150);
  points[1] = Point(130,280);
  points[2] = Point(270,280);

     Form1->Canvas->Polygon(points, 3);
}
//---------------------------------------------------------------------------

Последний раз редактировалось satanclaus; 06.07.2010 в 03:30.
satanclaus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с графикой в С# Ksanfur Помощь студентам 1 16.04.2010 23:39
Работа с графикой! Gladiator Фриланс 6 10.03.2010 18:47
Работа с графикой Geddar PHP 0 11.09.2009 07:22
Работа с графикой EdNovice Общие вопросы .NET 0 11.03.2009 11:09
Работа с графикой kminas Общие вопросы Delphi 5 21.11.2008 00:02