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

Рисование пятиконечной звезды - C++ Builder

19.07.2015, 15:59. Показов 8539. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Нужно написать программу,в диалоговом окне которой, в точке щелчка кнопкой мыши,вычерчивается контур пятиконечной звезды. У звезды должна быть возможность изменения двух радиусов,кол-ва вершин,цвета закраски и контура.

Никогда не сталкивался с рисованием в билдере,поэтому буду благодарен за любую помощь.
Миниатюры
Рисование пятиконечной звезды - C++ Builder  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.07.2015, 15:59
Ответы с готовыми решениями:

Рисование в Borland Builder C++ .
Вот в паскале всё просто - InitGraph() и потом что хошь то и делай. Как рисовать простоые вещи(2х мерные, просто линии и точки) в Borland...

Рисование простеньких рисунков в C++ Builder
нужен рабочий код рисунка(любого простого) на C++ Builder, т.е. чтобы он работал...я новичок в программировании, т.к. только недавно начали...

C++ Builder XE 10 multi-device project рисование
Внимание среда разработки XE 10. Собственно в чем вопрос, как и что делать мне понятно, вот есть хорошая на мой взгляд статья ...

5
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,358
Записей в блоге: 3
19.07.2015, 16:03
Начни с этого
1
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 3
19.07.2015, 18:19  [ТС]
Разобрался,как рисовать звезду. А как сделать так,чтобы ее центр находился в месте щелчка мыши? И чтобы она рисовалась по этому щелчку?
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,358
Записей в блоге: 3
19.07.2015, 18:26
Ты же рисуешь на канве самой формы? Тогда используй событие OnMouseUp
C++
1
2
3
4
5
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
 
}
Параметры X и Y - это и есть координаты точки, на которую указывает указатель мыши. Вот в этом обработчике и пиши код рисования звезды.
1
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 3
19.07.2015, 18:48  [ТС]
Рисую в канве формы. В общем на форме самой у меня 3 эдита,для кол-ва вершин и радиусов. Но звезда у меня немного наклонена,как это исправить?
вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
  n=StrToInt(Edit1->Text);
  R=StrToInt(Edit2->Text);
  r=StrToInt(Edit3->Text);
const float pi=3.1415926;
Canvas->MoveTo(X+R, Y);
int i=1;
while (i<=n*2)
{
      Canvas->LineTo(X+cos(i*pi/n)*r, Y+sin(i*pi/n)*r);
      i=i+1;
      Canvas->LineTo(X+cos(i*pi/n)*R, Y+sin(i*pi/n)*R);
      i=i+1;
}
}
И еще вопрос,как сделать так,чтобы можно было менять цвет контура и заливки? просто цветов много и явно не ифами нужно расписывать.
Миниатюры
Рисование пятиконечной звезды - C++ Builder  
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,012
19.07.2015, 20:14
Лучший ответ Сообщение было отмечено MrRedisko как решение

Решение

По мотивам темы Движение графического объекта по траектории, вращение, изменение цвета.

cpp:
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void TForm1::star (TPoint center, int outer_radius, int inner_radius, int beam_count, TColor fill_color, TColor outline_color)
{
  // center - центр фигуры
  // outer_radius и inner_radius - внешний и внутр. радиусы
  // beam_count - кол-во лучей
  // fill_color и outline_color - цвет заливки (закраски) и контура
 
  // обновляем изображение
  Refresh();
 
  // цвет контура
  Canvas->Pen->Color = outline_color;
 
  // переходим в "начальную точку" звезды
  Canvas->MoveTo(center.x+sin(0)*outer_radius, center.y-cos(0)*outer_radius);
 
  // рисуем лучи
  for (int i = 1; i <= beam_count; i++)
  {
    Canvas->LineTo(center.x+sin((i*2-1)*M_PI/beam_count)*inner_radius, center.y-cos((i*2-1)*M_PI/beam_count)*inner_radius);
    Canvas->LineTo(center.x+sin(i*2*M_PI/beam_count)*outer_radius+1, center.y-cos(i*2*M_PI/beam_count)*outer_radius-1);
  }
 
  // закрашиваем фигуру
  Canvas->Brush->Color = fill_color;
  Canvas->FloodFill(center.x, center.y, Canvas->Pixels[center.x][center.y], fsSurface);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
  if (Button == mbLeft)  // если нажата левая кнопка мыши
  {
    // задаем (определяем) параметры
    int outer_radius = LE_outer_radius->Text.ToIntDef(135), inner_radius = LE_inner_radius->Text.ToIntDef(55),
        beam_count = LE_beam_count->Text.ToIntDef(5);
    TColor fill_color = CB_fill_color->Selected, outline_color = CB_outline_color->Selected;
    // рисуем фигуру
    star(TPoint(X, Y), outer_radius, inner_radius, beam_count, fill_color, outline_color);
  }
}
//---------------------------------------------------------------------------
h:
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
//---------------------------------------------------------------------------
 
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Vcl.Dialogs.hpp>
#include <Vcl.ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TGroupBox *GroupBox;
    TLabeledEdit *LE_outer_radius;
    TLabeledEdit *LE_inner_radius;
    TLabeledEdit *LE_beam_count;
    TColorBox *CB_fill_color;
    TLabel *L_fill_color;
    TLabel *L_outline_color;
    TColorBox *CB_outline_color;
    void __fastcall FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y);
private:    // User declarations
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
    void star(TPoint center, int outer_radius, int inner_radius, int beam_count, TColor fill_color, TColor outline_color);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
dfm:
Code
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
object Form1: TForm1
  Left = 0
  Top = 0
  BorderIcons = [biSystemMenu, biMinimize]
  BorderStyle = bsSingle
  Caption = #1047#1074#1077#1079#1076#1072
  ClientHeight = 800
  ClientWidth = 800
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  Position = poScreenCenter
  OnMouseDown = FormMouseDown
  PixelsPerInch = 96
  TextHeight = 13
  object GroupBox: TGroupBox
    Left = 0
    Top = 0
    Width = 801
    Height = 105
    Caption = ' '#1055#1072#1088#1072#1084#1077#1090#1088#1099' '
    TabOrder = 0
    object L_fill_color: TLabel
      Left = 16
      Top = 67
      Width = 70
      Height = 13
      Caption = #1062#1074#1077#1090' '#1079#1072#1083#1080#1074#1082#1080
    end
    object L_outline_color: TLabel
      Left = 272
      Top = 67
      Width = 71
      Height = 13
      Caption = #1062#1074#1077#1090' '#1082#1086#1085#1090#1091#1088#1072
    end
    object LE_outer_radius: TLabeledEdit
      Left = 104
      Top = 24
      Width = 33
      Height = 21
      EditLabel.Width = 83
      EditLabel.Height = 13
      EditLabel.Caption = #1042#1085#1077#1096#1085#1080#1081' '#1088#1072#1076#1080#1091#1089
      LabelPosition = lpLeft
      LabelSpacing = 5
      NumbersOnly = True
      TabOrder = 0
      Text = '135'
    end
    object LE_inner_radius: TLabeledEdit
      Left = 288
      Top = 24
      Width = 33
      Height = 21
      EditLabel.Width = 99
      EditLabel.Height = 13
      EditLabel.Caption = #1042#1085#1091#1090#1088#1077#1085#1085#1080#1081' '#1088#1072#1076#1080#1091#1089
      LabelPosition = lpLeft
      LabelSpacing = 5
      NumbersOnly = True
      TabOrder = 1
      Text = '55'
    end
    object LE_beam_count: TLabeledEdit
      Left = 468
      Top = 24
      Width = 25
      Height = 21
      EditLabel.Width = 101
      EditLabel.Height = 13
      EditLabel.Caption = #1050#1086#1083#1080#1095#1077#1089#1090#1074#1086' '#1074#1077#1088#1096#1080#1085
      LabelPosition = lpLeft
      LabelSpacing = 5
      NumbersOnly = True
      TabOrder = 2
      Text = '5'
    end
    object CB_outline_color: TColorBox
      Left = 348
      Top = 64
      Width = 145
      Height = 22
      TabOrder = 3
    end
  end
  object CB_fill_color: TColorBox
    Left = 92
    Top = 64
    Width = 145
    Height = 22
    Selected = clRed
    TabOrder = 1
  end
end
ехе ниже.
Миниатюры
Рисование пятиконечной звезды - C++ Builder  
Вложения
Тип файла: zip star.zip (1.37 Мб, 66 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.07.2015, 20:14
Помогаю со студенческими работами здесь

Рисование пятиконечной звезды
как правильно нарисовать пятиконечную звезду средствами winapi? нашел вот такой хороший урок только вопрос в том как нарисовать одну линию...

Cопротивление пятиконечной звезды
Люди знающие!! помогите пожалуйста найти сопротивление пятиконечной звезды (все участки обладают одинаковым сопротивлением) У меня...

Контур пятиконечной звезды в программе Dev C++ 5.4.2
Здравствуйте, помогите пожалуйста сделать задание: нарисовать контур пятиконечной звезды средствами языка с++ Только нужно работать...

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

"Числа пятиконечной звезды"
Помогите пожалуйста решить следующую задачу: По периметру пятиконечной звезды необходимо проставить числа от 1 до 10 так, чтобы...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru