Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Графика

Ответить
Настройки темы
C/C++ - [решено] Графика

Аватара для -Marshall-

Старожил


Сообщения: 170
Благодарности: 13


Конфигурация

Профиль | Отправить PM | Цитировать


Здравствуйте, работаю в среде C++ Builder'e и вчера впервые встретился с понятием графика. Задача заключается в том, что создается событие onMouseMove и при наведении его на форму, активируется компонент TImage, который через Canvas отрисовывает изображение.



Вот, что у меня только получилось:
Код: Выделить весь код
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X,
		  int Y)
{
Image1->Canvas->Brush->Color=clWhite;
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
Image1->Canvas->Brush->Color=clGreen;
Image1->Canvas->Ellipse(X-20,Y-20,X+20,Y+20);
}
Помогите, пожалуйста..

Отправлено: 12:20, 11-12-2010

 

Аватара для -Marshall-

Старожил


Сообщения: 170
Благодарности: 13

Профиль | Отправить PM | Цитировать


В общем, что вышло, с графикой я разобрался, только вот одна накладка, не получается сделать часть трапеции серой..
Вот код:

Код: Выделить весь код
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X,
		  int Y)
{
int r=23;  //radius of circles
int X1=X+80, Y1=Y; //координаты второго круга

Image1->Canvas->Brush->Color=clWhite;
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
Image1->Canvas->Brush->Color=clGreen;  //color of circles
Image1->Canvas->Ellipse(X-r,Y-r,X+r,Y+r);  //left circle
Image1->Canvas->Ellipse(X1-r,Y1-r,X1+r,Y1+r); //right cicrlce
//Каркас (трапеция)
Image1->Canvas->Pen->Color=clGray;
Image1->Canvas->Brush->Color=clGray;
Image1->Canvas->MoveTo(X,Y);  //начальная точка первого круга
Image1->Canvas->LineTo(X1,Y1); //линия до второго круга
Image1->Canvas->MoveTo(X1,Y1);  //переход к центру второго круга
Image1->Canvas->LineTo(X1,Y1-60); //линия от 2 круга к верху
Image1->Canvas->MoveTo(X1,Y1-60); //переход к предыдущей линии
Image1->Canvas->LineTo(X+20,Y-60); //верхняя линия
Image1->Canvas->MoveTo(X+20,Y-60); //переход к линии сверху к точке слева
Image1->Canvas->LineTo(X,Y); //замыкающая линия от верха до центра 1 круга
//
Image1->Canvas->MoveTo(X+10,Y-30);//переход к точке по центру левой замыкающей линии
Image1->Canvas->LineTo(X1,Y1-30); //центральная линия в центре трапеции
Image1->Canvas->MoveTo(X+20,Y-60) ;//переход к точке к левому верхнему углу трапеции
Image1->Canvas->LineTo(X+20,Y-30); //чертеж линии от верхней левой точки к центральной линии
}

Отправлено: 18:14, 11-12-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


ИО Капитана Очевидности


Contributor


Сообщения: 5387
Благодарности: 1105

Профиль | Отправить PM | Цитировать


Цитата -Marshall-:
Помогите, пожалуйста.. »
Помогаю.
Данная функция будет исполняться при КАЖДОМ перемещении мыши в окне.
Оно вам надо?
Лучше так

Код: Выделить весь код
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X,int Y)
{
   if (fDrawed == false)
   {
       this->DrawFigure (Image1->Canvas);
       fDrawed = true;
   }
}
Переменная fDrawed - поле класса TForm1 - означает факт прорисовки картинки.
Функция DrawFigure - метод класса TForm1 - выполняет прорисовку картинки на объект типа TCanvas, указатель на который передаётся параметром функции

-------
Самое совершенное оружие, которым забиты арсеналы богатых и процветающих наций, может легко уничтожить необразованного, больного, бедного и голодного. Но оно не может уничтожить невежество, болезнь, нищету и голод. (Фидель Кастро)

Почему всех осужденных за измену Родине при Сталине реабилитировали при Горбачёве по отсутствию состава преступления? Потому что при Горбачёве измену Родине перестали считать преступлением.


Отправлено: 06:36, 15-12-2010 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Графика

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Графика в PascalABC verdix Флейм 3 12-10-2010 16:06
Драйвер - Тормозит графика.... djsova Microsoft Windows 2000/XP 6 20-11-2007 10:09
Построение графика dimon55 Хочу все знать 1 05-05-2004 21:26
Графика в С++ mask Программирование и базы данных 15 04-06-2003 19:51
графика и JavaScript Vlad Drakula Вебмастеру 1 04-03-2003 20:01




 
Переход