|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.07.2010, 03:34 | #11 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Всё верно. Рабоает.
А чтобы треугольники меняли размеры используй TrackBar.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 06.07.2010 в 03:42. |
06.07.2010, 11:10 | #12 | |
Форумчанин
Регистрация: 12.05.2010
Сообщений: 219
|
Цитата:
А вообще можно масштабировать координаты вершин относительно центра треугольника. Вот так можно... r- радиус х0,у0-координаты центра координаты "правой" вершины x1=x0+r*cos(330*3.14/180); y1=y0+r*sin(330*3.14/180); координаты "левой" вершины x2=x0+r*cos(210*3.14/180); y2=y0+r*sin(210*3.14/180); координаты "верхней" вершины x3=x0+r*cos(90*3.14/180); y3=y0+r*sin(90*3.14/180); это в классических координатах, т.е. надо еще в "экранные" перенести Последний раз редактировалось Stilet; 06.07.2010 в 11:26. |
|
06.07.2010, 17:17 | #13 |
Пользователь
Регистрация: 05.10.2009
Сообщений: 15
|
не могу подобрать градус для правой вершины, и при изменении радиуса треугольник соскакивает
Последний раз редактировалось satanclaus; 06.07.2010 в 17:30. |
06.07.2010, 17:21 | #14 | |
Форумчанин
Регистрация: 12.05.2010
Сообщений: 219
|
в смысле при "разных радиусах"?
по этим формулам Цитата:
|
|
06.07.2010, 17:41 | #15 |
Форумчанин
Регистрация: 12.05.2010
Сообщений: 219
|
если под "соскакивает" ты имел в виду, что он сразу пропадает, так это не в вычислении координат дело. Надо просто не забывать про Brush->color и Pen->Color
Например: Код:
|
06.07.2010, 18:44 | #16 |
Пользователь
Регистрация: 05.10.2009
Сообщений: 15
|
Большое спасибо!!! Всё сделал!
Но вопрос как перевернуть рисунок правильно а то при изменении градусов или треугольник не равносторонний, или весь пеинтбох красний. и как можна сделать исключения к етой программе???? Код:
|
06.07.2010, 20:01 | #17 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Лови код. Треугольник поворачивается и изменяется в размерах.
TrackBar1 - Min = 0 Max = 360 TrackBar1 - Min = 0 Max = 200 Это в инспекторе объектов. Оба TrackBar-а подключены к одному обработчику. #include <vcl.h> #pragma hdrstop #include "math.h" #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" int X=200; int Y=200; TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::TrackBar1Change(TObject *Sender) { Triangle(X,Y,TrackBar2->Position,TrackBar1->Position,clRed, true); Triangle(X,Y,TrackBar2->Position-10,TrackBar1->Position,clWhite, false); } //--------------------------------------------------------------------------- void __fastcall TForm1::Triangle(int x, int y, int r, int s, TColor C, bool D) { double L=M_PI/180; int a=s+120, b=a+120, c=b+120; Canvas->Brush->Color = clWhite; if(D)Canvas->FloodFill(x+r*cos(a*L),y+r*sin(a*L ),clWhite,fsBorder); Form1->Canvas->Brush->Color=C; TPoint points[3]; points[0] = Point(x+r*cos(a*L),y+r*sin(a*L));// Верхняя points[1] = Point(x+r*cos(b*L),y+r*sin(b*L));// Левая points[2] = Point(x+r*cos(c*L),y+r*sin(c*L));// Правая Form1->Canvas->Polygon(points, 3); }
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 06.07.2010 в 21:40. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с графикой в С# | 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 |