|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Графика |
|
C/C++ - [решено] Графика
|
Старожил Сообщения: 170 |
Профиль | Отправить PM | Цитировать Здравствуйте, работаю в среде C++ Builder'e и вчера впервые встретился с понятием графика. Задача заключается в том, что создается событие onMouseMove и при наведении его на форму, активируется компонент TImage, который через Canvas отрисовывает изображение.
Вот, что у меня только получилось: Помогите, пожалуйста.. |
|
Отправлено: 12:20, 11-12-2010 |
Старожил Сообщения: 170
|
Профиль | Отправить 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 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
ИО Капитана Очевидности Сообщения: 5387
|
Профиль | Отправить PM | Цитировать Цитата -Marshall-:
Данная функция будет исполняться при КАЖДОМ перемещении мыши в окне. Оно вам надо? Лучше так void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X,int Y) { if (fDrawed == false) { this->DrawFigure (Image1->Canvas); fDrawed = true; } } Функция DrawFigure - метод класса TForm1 - выполняет прорисовку картинки на объект типа TCanvas, указатель на который передаётся параметром функции |
|
------- Отправлено: 06:36, 15-12-2010 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Графика в 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 |
|