1 Востаннє редагувалося Proh8530 (23.06.2016 21:41:11)

Тема: Проста графіка. Форми. С++

Усім привіт.
Ось наткнувся на таку задачу: потрібно вивести на екран різнокольорову дитячу пірамідку з n (ми його вводимо) прямокутників, кожен з яких зменшується від попереднього на 10%.
Почав шукати в І - неті теорію, оскільки тільки почав пізнавати С++ і графіку.
трішки коду написав, але він лише створює прямокутник і окрашує його в червоний колір.
Допоможіть, будь ласка, з кодом або теорією, що б допомогла мені з цією задачею

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int n = StrToInt(Edit1->Text);
    Form1->Canvas->Rectangle(10, 10, 110, 110);
    Canvas->Brush->Color = clRed;
    Form1->Canvas->FloodFill(15, 15, clRed, fsSurface);
}

2 Востаннє редагувалося Proh8530 (24.06.2016 09:41:49)

Re: Проста графіка. Форми. С++

ОСь я дописав:
Створив кнопку, тсрічку вводу для n і для кнопки написав такий код ?
Він відповідає умові задачі :?


float x = 0, y = 0, x1, x2, y1, y2; 
int i, n = StrToInt(Edit1 -> Text);
for(i = 0; i < n; i++)
{
    // лівий верхній кут і правий нижній координати
    Form1->Canvas->Rectangle(x1 = 200 + x, y1 = 300 + y, x2 = 825 - x, y2 = 325 + y);
    y += 25;
    x += 0.1 * (x2 - x1);
    Form1->Canvas->Brush->Color = (TColor)RGB(rand() % 255, rand() % 255, rand() % 255);
}

3

Re: Проста графіка. Форми. С++

Для початку:
- в C++ немає графіки. Вся графіка - в сторонніх бібліотеках. У вашому випадку - VCL чи FMX.
- робіть відступи, давайте змінним (навіть автоматично створеним) людські імена і взагалі, намагайтеся робити код якомога читанішим. Більшу частину часу програміст читає свій код, а не пише його. Економте власний час.

Що ж до вашого питання - то ви, здається, здатні самостійно визначити, чи виводиться там дитяча пірамідка. Якщо трохи конкретизуєте питання - може, щось і підкажемо, але якщо вас цей код влаштовує, то інших відвідувачів форуму - й поготів. Трохи дивно, що y ніде не використовується - можливо, десь мав бути замість z... а може, й ні.

Подякували: leofun01, Proh85302

4

Re: Проста графіка. Форми. С++

Після натискання на кнопку спробуйте змінити розмір вікна своєї програми, або згорнути й розгорнути її. Усе намальоване зітреться. Малювати треба в OnPaint, а щоб примусово освіжити картинку, треба викликати Repaint.

Подякували: leofun011

5

Re: Проста графіка. Форми. С++

шось ви таке незрозуміле робите. От коли я графікою займався, то юзав OpenGL, там мона дуже легко малювати, що захочете, і все працює файно.