Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.93/60: Рейтинг темы: голосов - 60, средняя оценка - 4.93
10 / 9 / 2
Регистрация: 12.10.2010
Сообщений: 135

Графика в С++ Builder

29.10.2010, 23:39. Показов 12738. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
С графикой в Билдере почти не работал, а тут вот необходимость такая.
В общем смысл заключается в поле с координатными осями, только размерность координат нужно задавать вручную, (ну то есть шаг по X,Y =10, 100 или 1000 и т.д)
Ну а рисование простенькое по точкам соединяющимся отрезками. И координатная осб должна быть всегда видна.
Решил в качестве поля для рисования использовать компонент Image, подойдет он для рисования???
Буду благодарен за советы, или ссылки на книжки, спасибо)))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.10.2010, 23:39
Ответы с готовыми решениями:

Графика в с++ builder
Нужно нарисовать степлер при помощи обычных фигур и линий безье и залить каким нибудь цветом... Нужна помощь.. Зараннее спасибо!

Графика в C++ Builder
Здравствуйте! А подскажите пожалуйста чем еще можно заштриховать круг? мне надо сделать заштрихованый круг. А те методы которые...

Графика в c++ builder
Здравствуйте, сотоварищи-программисты. Начал работать над программой в билдере, которая будет простейшим графическим редактором. Но...

43
10 / 9 / 2
Регистрация: 12.10.2010
Сообщений: 135
08.11.2010, 20:46  [ТС]
Студворк — интернет-сервис помощи студентам
Хэй-хо))) Подскажите плиз как сделать рисование окружности, как в редакторе Paint, с одной точки протягивать окружность в сторону, вверх или вниз?
0
 Аватар для Lerny
56 / 56 / 10
Регистрация: 14.03.2010
Сообщений: 157
08.11.2010, 21:00
Запихиваем на форму Timer.
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
POINT t1,t2;
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
t1.x=X;
t1.y=Y;
t2.x=X;
t2.y=Y;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
 
Form1->Canvas->Pen->Color=Form1->Color;
Form1->Canvas->Ellipse(t1.x,t1.y,t2.x,t2.y);
::GetCursorPos(&t2);
::ScreenToClient(Form1->Handle,&t2);
 
Form1->Canvas->Pen->Color=clBlack;
Form1->Canvas->Ellipse(t1.x,t1.y,t2.x,t2.y);
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
Timer1->Enabled=false;
}
Если не нравится ::GetCursorPos(&t2) и Timer:
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
bool pict;
POINT t1,t2;
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
Timer1->Interval=10;
Timer1->Enabled=true;
t1.x=X;
t1.y=Y;
t2.x=X;
t2.y=Y;
pict=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
pict=false;
}
//---------------------------------------------------------------------------
 
 
 
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
if (pict==true){
Form1->Canvas->Pen->Color=Form1->Color;
Form1->Canvas->Ellipse(t1.x,t1.y,t2.x,t2.y);
t2.x=X;
t2.y=Y;
Form1->Canvas->Pen->Color=clBlack;
Form1->Canvas->Ellipse(t1.x,t1.y,t2.x,t2.y);
}
}
1
 Аватар для voalex
32 / 32 / 8
Регистрация: 21.10.2009
Сообщений: 97
09.11.2010, 07:48
Почитайте Архангельского. Там есть пример создания простенького графического редактора.
0
10 / 9 / 2
Регистрация: 12.10.2010
Сообщений: 135
11.11.2010, 21:28  [ТС]
А точное название книжки можно?)
Как сделать окружность прозрачной, чтобы только контур был виден?)
0
 Аватар для Lerny
56 / 56 / 10
Регистрация: 14.03.2010
Сообщений: 157
11.11.2010, 22:35
Поставь цветы кисти как у канвы и будет тебе какбэ прозрачность.
или Form1->Canvas->Brush->Style=bsClear;
0
 Аватар для voalex
32 / 32 / 8
Регистрация: 21.10.2009
Сообщений: 97
12.11.2010, 07:28
Программирование в C++ Builder
А.Я. Архангельский
0
10 / 9 / 2
Регистрация: 12.10.2010
Сообщений: 135
12.11.2010, 22:31  [ТС]
Цитата Сообщение от Lerny Посмотреть сообщение
Запихиваем на форму Timer.
Если не нравится ::GetCursorPos(&t2) и Timer:
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
bool pict;
POINT t1,t2;
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
Timer1->Interval=10;
Timer1->Enabled=true;
t1.x=X;
t1.y=Y;
t2.x=X;
t2.y=Y;
pict=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
pict=false;
}
//---------------------------------------------------------------------------
 
 
 
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
if (pict==true){
Form1->Canvas->Pen->Color=Form1->Color;
Form1->Canvas->Ellipse(t1.x,t1.y,t2.x,t2.y);
t2.x=X;
t2.y=Y;
Form1->Canvas->Pen->Color=clBlack;
Form1->Canvas->Ellipse(t1.x,t1.y,t2.x,t2.y);
}
}
Рисую я на Image, и как то странно все получается:
0
RaSeR
12.11.2010, 22:39
Цитата Сообщение от Pack_4 Посмотреть сообщение
Рисую я на Image, и как то странно все получается:
Вложение 49380
зато красиво )))
 Аватар для Lerny
56 / 56 / 10
Регистрация: 14.03.2010
Сообщений: 157
12.11.2010, 22:48
Pack_4, а где ж вы на Image рисуете, если:
C++
1
Form1->Canvas->Ellipse(t1.x,t1.y,t2.x,t2.y);
?
0
10 / 9 / 2
Регистрация: 12.10.2010
Сообщений: 135
12.11.2010, 22:50  [ТС]
Я заменил все на Image
И естественно, обработчики тоже для Image использовал
0
 Аватар для Lerny
56 / 56 / 10
Регистрация: 14.03.2010
Сообщений: 157
12.11.2010, 22:58
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
bool pict;
POINT t1,t2;
 
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
t1.x=X;
t1.y=Y;
t2.x=X;
t2.y=Y;
pict=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
pict=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
if (pict==true){
Image1->Canvas->Pen->Color=clWhite;
Image1->Canvas->Ellipse(t1.x,t1.y,t2.x,t2.y);
t2.x=X;
t2.y=Y;
Image1->Canvas->Pen->Color=clBlack;
Image1->Canvas->Ellipse(t1.x,t1.y,t2.x,t2.y);
}
}
0
10 / 9 / 2
Регистрация: 12.10.2010
Сообщений: 135
12.11.2010, 23:02  [ТС]
Теперь все ок, все было так же, только не могу понять где ошибка была(
0
 Аватар для Lerny
56 / 56 / 10
Регистрация: 14.03.2010
Сообщений: 157
12.11.2010, 23:04
Может тут?
C++
1
Image1->Canvas->Pen->Color=clWhite;
0
10 / 9 / 2
Регистрация: 12.10.2010
Сообщений: 135
12.11.2010, 23:09  [ТС]
Похоже что да, только используя clWhite и clBlack он не прозрачен
Code
1
Image1->Canvas->Brush->Style=bsClear;
для прозрачности
Code
1
2
3
4
5
6
7
8
if (pict==true){
Image1->Canvas->Brush->Style=bsClear;
Image1->Canvas->Ellipse(t1.x,t1.y,t2.x,t2.y);
t2.x=X;
t2.y=Y;
Image1->Canvas->Pen->Color=clBlack;
Image1->Canvas->Ellipse(t1.x,t1.y,t2.x,t2.y);
}
и выходит такой же казус, может не так прозрачность?
0
 Аватар для Lerny
56 / 56 / 10
Регистрация: 14.03.2010
Сообщений: 157
12.11.2010, 23:26
C++
1
2
3
4
5
6
7
8
9
if (pict==true){
Image1->Canvas->Brush->Style=bsClear;
Image1->Canvas->Pen->Color=clWhite;
Image1->Canvas->Ellipse(t1.x,t1.y,t2.x,t2.y);
t2.x=X;
t2.y=Y;
Image1->Canvas->Pen->Color=clBlack;
Image1->Canvas->Ellipse(t1.x,t1.y,t2.x,t2.y);
}
Но учтите, что сам карандаш будет стирать предыдущие записи.
Если хотите и от этого избавится, то надо рисовать на Bitmap'е.

Добавлено через 2 минуты
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
Graphics::TBitmap *bm;
bool pict;
POINT t1,t2;
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
t1.x=X;
t1.y=Y;
t2.x=X;
t2.y=Y;
pict=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
pict=false;
bm->Canvas->Ellipse(t1.x,t1.y,t2.x,t2.y);
}
//---------------------------------------------------------------------------
 
 
 
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
if (pict==true){
Form1->Canvas->Draw(0,0,bm);
Form1->Canvas->Pen->Color=clWhite;
Form1->Canvas->Ellipse(t1.x,t1.y,t2.x,t2.y);
t2.x=X;
t2.y=Y;
Form1->Canvas->Pen->Color=clBlack;
Form1->Canvas->Ellipse(t1.x,t1.y,t2.x,t2.y);
}
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 
bm=new  Graphics::TBitmap;
bm->Width=Form1->ClientWidth;
bm->Height=Form1->ClientHeight;
bm->Canvas->Brush->Style=bsClear;
Form1->Canvas->Brush->Style=bsClear;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
delete bm;
bm=0;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormPaint(TObject *Sender)
{
Form1->Canvas->Draw(0,0,bm);
}
1
10 / 9 / 2
Регистрация: 12.10.2010
Сообщений: 135
12.11.2010, 23:30  [ТС]
Ясно, будем дальше разбираться
0
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 492
14.11.2010, 01:03
Ты хочешь такого результата?
Вложения
Тип файла: rar Project1.rar (13.9 Кб, 55 просмотров)
0
10 / 9 / 2
Регистрация: 12.10.2010
Сообщений: 135
14.11.2010, 12:15  [ТС]
Цитата Сообщение от Garic_ Посмотреть сообщение
Ты хочешь такого результата?
Не понял, что там меняется? Заполнение для чего?)
0
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 492
14.11.2010, 15:40
В RichEdit1 или в Memo1 заносится информация от движения мышки (прорисованный рисунок), благодаря которой можно воспроизвести(повторить) рисунок.
0
10 / 9 / 2
Регистрация: 12.10.2010
Сообщений: 135
14.11.2010, 17:41  [ТС]
Нет, мне не это нужно)
Координаты считываются изначально в соответствии с исходными осями, те вправо по X от 100 до 700
в соответствии с шириной Image; А как сделать чтобы начало координат было допустим (0,0) и логическое значение было например по Х от 0 до 10000, но при этом сама ось была такой же.
Суть в задании значений координат, может более яснее по рисунку:
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.11.2010, 17:41

Построения графика в C++ builder
Добрый день. скажыте где можна найти построения графика в с++ builder. график самий простой. любой. подойдет даже y=sun(x) ...

Создание графика в C++ Builder
Доброго времени суток форумчане! В программу надо внедрить каркас графика функции (не знаю как правильно назвать). На этот кусок кода,...

Построение графика в С++ builder
Всем привет, не могу найти нормальный источник откуда научиться строить самые простые графики. У меня есть известные мне точки по которым...

Построение графика в Builder
Доброго времени суток. В общем задача: есть массив данных x и массив данных y. Эти массивы должны заполняться из окна программы(как это...

Зуммирование графика (C++ Builder 6)
Всем добрый день. У меня к знающим людям такой вопрос. Есть программа реализующая метод наилучшей пробы и метод Ньютона-Рафсона для двух...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru