1 Востаннє редагувалося koala (06.06.2018 12:23:54)

Тема: Принуип побудови координатної сітки

Допоожіть розібратися з кодом. Дана чатикна малює горизонтальні, а потім вертикальні лінії так, щоб утворилась координатна сітка. Посніть, будь ласка, по якому принципу  це відбувається  та умову і тіло циклу

private: System::Void DrawGrid(Pen^ pen, Graphics^ g) {
    float dt = 20.0f / scale;    //шаг на масштаб

    pen->Width = 1 / scale;    // ширина карандаша

    // рисуем горизонтальные линии по всей длине picturebox
    for( float i = 0.f; i < (float)pictureBox1->Width/2.f; i += dt)
    {
        g->DrawLine(pen,  i, (float)pictureBox1->Height/-2.f,  i, (float)pictureBox1->Height/2.f); 
        g->DrawLine(pen, -i, (float)pictureBox1->Height/-2.f, -i, (float)pictureBox1->Height/2.f); 
    }

    // рисуем вертикальные по всей длине
    for( float i = 0.f; i < (float)pictureBox1->Width/2.f; i += dt)
    {
        g->DrawLine(pen, (float)pictureBox1->Width/-2.f,  i, (float)pictureBox1->Width/2.f,  i); 
        g->DrawLine(pen, (float)pictureBox1->Width/-2.f, -i, (float)pictureBox1->Width/2.f, -i); 
    }
}

Дуже вдячна

2

Re: Принуип побудови координатної сітки

Прихований текст

думав вже почати розписувати, але помітив коментарі ламаною болгарською, а коли я таке помічаю, то я починаю панікувати, голосно кричати і бігати по кімнаті

3

Re: Принуип побудови координатної сітки

У майбутньому тег code додавайте самостійно.
І розпишіть, що ви тут розумієте, а з чим виникли проблеми. Нагадую, що

Правила написав:

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

4

Re: Принуип побудови координатної сітки

не можу зрозуміти :
g->DrawLine(pen,  i, (float)pictureBox1->Height/-2.f,  i, (float)pictureBox1->Height/2.f);

будується поточково?

5

Re: Принуип побудови координатної сітки

ні, воно ж зветься DrawLine - МалюватиЛінія, отже воно малює лінію.
Якщо ви заглянете сюди
https://msdn.microsoft.com/uk-ua/librar … s.71).aspx
То побачите опис параметрів.

https://cdn.discordapp.com/attachments/333936584481177600/453871794114527233/unknown.png
це якось допомогло?

Подякували: leofun01, Юра_Максименко2

6

Re: Принуип побудови координатної сітки

тобто у є дві точки:
g->DrawLine(pen,  i, (float)pictureBox1->Height/-2.f,  i, (float)pictureBox1->Height/2.f);
g->DrawLine(pen, -i, (float)pictureBox1->Height/-2.f, -i, (float)pictureBox1->Height/2.f);
координати яких змінюються, і які зєднуються лінією
а функція DrawLine малює цю лінію.
  я правльно розумію?

7

Re: Принуип побудови координатної сітки

один виклик DrawLine вже малює одну лінію.
x1, y1, x2, y2 - це координати для ДВОХ точок, і DrawLine малює лінію між цими ДВОМА точками, використовуючи pen (pen містить інфу про те, який колір, товщина та стиль повинна мати лінія).

g->DrawLine(pen,  i, (float)pictureBox1->Height/-2.f,  i, (float)pictureBox1->Height/2.f); 
g->DrawLine(pen, -i, (float)pictureBox1->Height/-2.f, -i, (float)pictureBox1->Height/2.f);

малює дві лінії

Подякували: Юра_Максименко1

8

Re: Принуип побудови координатної сітки

підкажіть іще, будь ласка, на якому моменті закінчується цикл?
А починаться з креслення лінії в верхньому правому кутку?

9

Re: Принуип побудови координатної сітки

коли i дорівнює, або більше за pictureBox1->Width/2.f
залежить від системи координат. Взагалі в нормальних пацанів прийнято, що лівий верхній кут - це початок координат, але у вас воно по центрі, і Y - це горизонтальна вісь, а X - вертикальна, начебто.