Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.56
XNick
3 / 3 / 1
Регистрация: 29.01.2010
Сообщений: 113
#1

Процедура заливки многоугольника - C++ Builder

16.01.2012, 19:35. Просмотров 1120. Ответов 0
Метки нет (Все метки)

Привет всем! Помогите решить проблему.
Задание:
Написать процедуру заливки многоугольника, реализующую алгоритм однотонной заливки многоугольника методом построчного сканирования. Количество вершин многоугольника выбирается не менее 5. (Я сделал 7 вершин)
Я все сделал, но при нажатии кнопкой мыши на заливаемую область (сделал чтоб заливалось по щелчку по выбранной области) многоугольника, появляется ошибка.
Ошибка (см. вложение. для загрузки изображений используйте встроенные возможности форума)
Вот код:
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
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int a,Xz,Yz;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7;
x1=StrToInt(Form1->Edit1->Text);
y1=StrToInt(Form1->Edit2->Text);
x2=StrToInt(Form1->Edit3->Text);
y2=StrToInt(Form1->Edit4->Text);
x3=StrToInt(Form1->Edit5->Text);
y3=StrToInt(Form1->Edit6->Text);
x4=StrToInt(Form1->Edit7->Text);
y4=StrToInt(Form1->Edit8->Text);
x5=StrToInt(Form1->Edit9->Text);
y5=StrToInt(Form1->Edit10->Text);
x6=StrToInt(Form1->Edit11->Text);
y6=StrToInt(Form1->Edit12->Text);
x7=StrToInt(Form1->Edit13->Text);
y7=StrToInt(Form1->Edit14->Text);
Form1->Image1->Canvas->Pen->Color=Form1->ColorBox1->Selected;
Form1->Image1->Canvas->MoveTo(x1,y1);
Form1->Image1->Canvas->LineTo(x2,y2);
Form1->Image1->Canvas->LineTo(x3,y3);
Form1->Image1->Canvas->LineTo(x4,y4);
Form1->Image1->Canvas->LineTo(x5,y5);
Form1->Image1->Canvas->LineTo(x6,y6);
Form1->Image1->Canvas->LineTo(x7,y7);
Form1->Image1->Canvas->LineTo(x1,y1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::GAZ(TColor grn_pix, TColor new_pix, int x_isx, int y_isx)
{
TColor a=Form1->Image1->Canvas->Pixels[x_isx][y_isx];
if ((!(a==grn_pix))&&(!(a==new_pix)))
{
        Form1->Image1->Canvas->Pixels[x_isx][y_isx]=new_pix;
        GAZ(grn_pix, new_pix, x_isx+1, y_isx);
        GAZ(grn_pix, new_pix, x_isx, y_isx+1);
        GAZ(grn_pix, new_pix, x_isx-1, y_isx);
        GAZ(grn_pix, new_pix, x_isx, y_isx-1);
}
}
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
Xz=X;
Yz=Y;
TColor gr=Form1->ColorBox1->Selected;
TColor vn=Form1->ColorBox2->Selected;
GAZ(gr, vn, Xz, Yz);
}
//---------------------------------------------------------------------------
А также прилагается архив с проектом.
http://www.cyberforum.ru/cpp-builder/thread138410.html
0
Миниатюры
Процедура заливки многоугольника  
Вложения
Тип файла: rar Задание 6.rar (327.2 Кб, 41 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2012, 19:35
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Процедура заливки многоугольника (C++ Builder):

Многоугольники на канве TImage с изменяемой прозрачностью заливки
Всем доброго дня! Помогите, пожалуйста, кто на &quot;ты&quot; с прозрачностью....

Нахождение центра многоугольника
Добрый день. Не подскажите как найти центр многоугольника строящегося по 10-и...

Раскрой выпуклого многоугольника двумя методами С++
Помогите перваку с курсачем по АСА Раскрой выпуклого многоугольника на...

Отрисовка правильного многоугольника по введенным данным (BCB6)
Как сделать, чтобы пользователь вводил данные и рисовался правильный...

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2012, 19:35
Привет! Вот еще темы с решениями:

Найти координаты всех вершин правильного многоугольника, зная координаты центра и радиус описанной окружности.
Дан правильный N-угольник с центром в точке (X, Y) и с радиусом описанной...

Удержание цветовой заливки
Хочется сделать красиво.... Настроил вет текста и фона при нажатии на кнопку....

цвет заливки несоответствия
есть фотоальбом у фоток есть превью превью сделаные скритом где несоответствие...

Реализация алгоритма заливки
Имеется фигура с 12 вершинами. Нужно реализовать алгоритм заливки области...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru