Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 02.05.2010
Сообщений: 8

Joint-точки в TImage

02.05.2010, 17:17. Показов 3555. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как можно вклеить такие точки в TImage?

P.S. Как в Pivot Stickfigure Animator
Миниатюры
Joint-точки в TImage  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.05.2010, 17:17
Ответы с готовыми решениями:

TImage и отображение точки на мониторе
Вопрос - создаем Timage ставим одну точку, компилируем запускаем, смотрим что на мониторе точка отображается не менее трех пикселей...

Could not find a match for 'TImage::TImage()'
Решил поработать с классами. Ну и заодно разобраться с firemonkey. Сразу же нарвался на такую штуку. Вроде в firemonkey есть TImage,...

Joint 2d script
Может кто то сталкивался с такой проблемкой. Игра 2d При работе в редакторе с FixedJoint2D или HingeJoint2D все нормально работает. Но при...

30
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
02.05.2010, 23:21
Студворк — интернет-сервис помощи студентам
зачем такие сложности, не пугайте человека
это же простая фигара из окружностей и прямоугольников
0
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
02.05.2010, 23:33
это же простая фигура из окружностей и прямоугольников
Согласен. Как нарисовать прямоугольник под углом?
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
02.05.2010, 23:43
Цитата Сообщение от Grey Посмотреть сообщение
Как нарисовать прямоугольник под углом?
C++
1
2
3
    Canvas->Pen->Width = 20;
    Canvas->MoveTo(10,10);
    Canvas->LineTo(100,150);
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
03.05.2010, 01:33
Цитата Сообщение от Roma_F Посмотреть сообщение
это же простая фигура из окружностей и прямоугольников
простой фигурой изображение станет только тогда, когда будет обрисовано примитивами.
В остальных случаях - это картинка без прав на "простые управления".
И судя из обсуждений в теме, это далеко не обработка конкретного случая.

Если же автор желает ограничиться только тем, что в приложении можно будет обрабатывать только одну картинку - то я вообще не понимаю, в чём проблема.
При создании этой модели человека заносите координаты составляющих фигур в массив.
А при добавлении точек проверяйте на какую часть указывает данная точка.
Таким образом сможете получить и указатель на фигуру. Её и поворачивайте.
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
03.05.2010, 08:53
Цитата Сообщение от MiCr0s0fT Посмотреть сообщение
простой фигурой изображение станет только тогда, когда будет обрисовано примитивами.
В остальных случаях - это картинка без прав на "простые управления".
И судя из обсуждений в теме, это далеко не обработка конкретного случая.
Управлять нужно не картинкой а "скелетом" (с "простым управлением") - Pivot Stickfigure Animator. Не нужны даже упомянутые мной прямоугольники - что упрощает задачу.
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
03.05.2010, 14:13
Цитата Сообщение от DCamer Посмотреть сообщение
вклеить
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "math.h"
TPoint t[2];
 
bool P1 = false, P2 = false;
int x1(200), x2(200), y1(200), y2(100);
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDblClick(TObject *Sender)
{
    t[0] = Point ( x1, y1 );
    t[1] = Point ( x2, y2 );
    Canvas->Polygon ( t, 1 );
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
      if ( abs(X - x1) < 5 && abs(Y - y1) < 5 )  P1 = true;
      if ( abs(X - x2) < 5 && abs(Y - y2) < 5 )  P2 = true;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
    if ( P1 ) t[0] = Point ( x1 = X, y1 = Y );
    if ( P2 ) t[1] = Point ( x2 = X, y2 = Y );
 
    if( P1 != P2)
    {
        PatBlt(Canvas->Handle, 0, 0, ClientWidth, ClientHeight, PATCOPY );
        Canvas->Polygon ( t, 1 );
    }
    Canvas->Pen->Width = 2;                  Canvas->Pen->Color  = clYellow;
     Canvas->Ellipse(x1-2, y1-2, x1+3, y1+3); Canvas->Pen->Color  = clLime;
      Canvas->Ellipse(x2-2, y2-2, x2+3, y2+3); Canvas->Pen->Color  = clTeal;
    Canvas->Pen->Width = 8;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{     P1 = P2 = false;               }
//---------------------------------------------------------------------------
2
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
03.05.2010, 20:55
mirso, а если точек больше двух?

У меня имаге 2 и 3, точки перемещения, с нарисованными красными кругами.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
int x=300,y=300,x1,y1,x2,y2,a,b;
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Form1->Image2->Top=395;
Form1->Image2->Left=295;
Form1->Image3->Top=495;
Form1->Image3->Left=295;
 
y1=Form1->Image2->Top-y+5;
x1=Form1->Image2->Left-x+5;
 
y2=Form1->Image3->Top-Form1->Image2->Top;
x2=Form1->Image3->Left-Form1->Image2->Left;
 
Form1->Image1->Canvas->Pen->Width=10;
Form1->Image1->Canvas->MoveTo(x,y);
Form1->Image1->Canvas->LineTo(x+x1,y+y1);
Form1->Image1->Canvas->MoveTo(x+x1,y+y1);
Form1->Image1->Canvas->LineTo(x+x1+x2,y+y1+y2);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image3MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
a=X;
b=Y;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image3MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
if (Shift.Contains(ssLeft))
{
int z=X;
int c=Y;
 
Form1->Image1->Canvas->FillRect(Rect(0,0,Image1->Width,Image1->Height));
 
Form1->Image3->Left=Form1->Image3->Left-a+z;
Form1->Image3->Top=Form1->Image3->Top-b+c;
 
y2=Form1->Image3->Top-Form1->Image2->Top;
x2=Form1->Image3->Left-Form1->Image2->Left;
 
Form1->Image1->Canvas->MoveTo(x,y);
Form1->Image1->Canvas->LineTo(x+x1,y+y1);
Form1->Image1->Canvas->MoveTo(x+x1,y+y1);
Form1->Image1->Canvas->LineTo(x+x1+x2,y+y1+y2);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image2MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
a=X;
b=Y;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image2MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
if (Shift.Contains(ssLeft))
{
int z=X;
int c=Y;
 
Form1->Image1->Canvas->FillRect(Rect(0,0,Image1->Width,Image1->Height));
 
Form1->Image2->Left=Form1->Image2->Left-a+z;
Form1->Image2->Top=Form1->Image2->Top-b+c;
 
y1=Form1->Image2->Top-y+5;
x1=Form1->Image2->Left-x+5;
 
y2=Form1->Image3->Top-Form1->Image2->Top;
x2=Form1->Image3->Left-Form1->Image2->Left;
 
Form1->Image1->Canvas->MoveTo(x,y);
Form1->Image1->Canvas->LineTo(x+x1,y+y1);
Form1->Image1->Canvas->MoveTo(x+x1,y+y1);
Form1->Image1->Canvas->LineTo(x+x1+x2,y+y1+y2);
}
}
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
03.05.2010, 23:46
Цитата Сообщение от Grey Посмотреть сообщение
mirso, а если точек больше двух?
Grey, всЁ поправимо!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//---------------------------------------------------------------------------
#include <vector>
#include "math.h"
std::vector<TPoint> t;
int L = 5;
int P = -1;
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDblClick(TObject *Sender)
{
    t.push_back( TPoint(100, 200));
    t.push_back( TPoint(200, 100));
    t.push_back( TPoint(300, 200));
    Canvas->Ellipse(95, 195, 105, 205);
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
    for (size_t i = 0; i < t.size(); ++i)
    if ( abs(X - t[i].x) < 5 && abs(Y - t[i].y) < 5 )
    { P = i; break; }  
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
    if( P >= 0 )
    {
        t[P] = TPoint ( X, Y );
        PatBlt(Canvas->Handle, 0, 0, ClientWidth, ClientHeight, PATCOPY );
        Canvas->Pen->Width = 8;  Canvas->Pen->Color  = clTeal;
        Canvas->Polygon( &t.at(0), t.size()-1 );
        Canvas->Pen->Width = 2;   Canvas->Pen->Color  = clLime;
        for(size_t i = 0; i < t.size(); ++i)
        {
            Canvas->Ellipse(t[i].x-L, t[i].y-L, t[i].x+L, t[i].y+L);
        }
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{     P = -1; }
//---------------------------------------------------------------------------
Добавлено через 22 минуты
а если так ↓, то выйдут - кривые Безье
C++
1
2
3
    t.push_back( TPoint(200, 300));//4
    Canvas->PolyBezier( &t.at(0), t.size()-1 );
    Canvas->PolyBezierTo( &t.at(0), t.size()-1 );
2
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
05.05.2010, 02:41
C++
1
std::vector<TPoint> t(40, TPoint(100, 300));
Миниатюры
Joint-точки в TImage  
0
4 / 4 / 1
Регистрация: 15.04.2010
Сообщений: 134
06.05.2010, 19:34
Ребята ктото знает как можно загужать рисунки в Image1 в коду
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
06.05.2010, 22:20
Цитата Сообщение от lebid Посмотреть сообщение
как можно загужать рисунки в Image1
lebid, вот так
C++
1
    Image1->Picture->LoadFromFile( "ImageF_1.JPG" );
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.05.2010, 22:20
Помогаю со студенческими работами здесь

Как по нажатию мыши менять TImage и перерисовывать на него bmp с другого TImage?
Есть два TImage. На Image1 картинка TBitmap, Image1 растянут на всю форму. При нажатии на Image1 и OnMouseMove var x1, y1: integer; ...

Мерцание компонента Timage и перемещение Timage при нажатии
Здравствуйте! Помогите убрать мерцание компонента Timage при изменении размера. Нашел в поиске, советуют так: procedure...

Почему тело, которое скрепленное Fixed Joint разваливается?
Ситуация такая. Есть 4 объекта-линии(вытянутые параллелепипеды т.к. работаю в 3D), соединенные между собой в четырех точках. Нужно сделать...

Как быстро отфильтровать mp3 файлы с Joint Stereo?
Здравствуйте. Скачал музыку на флешку в авто. Но заметил что магнитола не может воспроизвести все файлы. После некоторого времени,...

На графике отметить асимптоты, точки экстремума, точки перегиба, точки пересечения с осями координат
Что-то выходит не совсем правильный график. clc; clear all; close all; l = -10; r = 10; N = 1000;


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru