Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

c# jak stworzyć klasę rysującą trójkąt .....

karola7475 15 Sty 2012 17:30 2251 6
  • #1 15 Sty 2012 17:30
    karola7475
    Poziom 7  

    Witam
    mam stworzyć klasę rysującą trójkąt prostokątny po kliknięciu myszką w panel
    jak na razie mam interfejs

    Code:
     interface IDrawable
    
        {
            void Draw(Graphics g);
            bool Contains(Point p);
        }

    i klasę dla koła która wygląda tak
    Code:
     class Kolo : IDrawable
    
        {
            public Kolo(Brush brush, int x, int y, int r)
            {
                this.X = x;
                this.Y = y;
                this.R = r;
                this.Br = brush;
            }
       
            public  int X { get; set; }
            public int Y { get; set; }

            public int R { get; set; }

            public Brush Br { get; set; }

            public void Draw(Graphics g)
            {
                g.FillEllipse(Br, X - R, Y - R, 2 * R, 2 * R);
            }


            public bool Contains(Point p)
            {
                return ((p.X - X)*(p.X - X) + (p.Y - Y)*(p.Y - Y)) <= (R * R);
            }
        }
    }

    jak stworzyć klasę dla trójkąta
    mam zaczęte takie coś
    Code:
     class Trojkat : IDrawable
    
        {
            public Trojkat(Brush brush, Point[] punkty)
            {
                this.punkty = punkty;
                this.Br = brush;
            }


            public Brush Br { get; set; }

            public void Draw(Graphics g)
            {
                g.FillPolygon(Br, punkty);
            }
        }

    wiem że do rysowania trójkąta muszę stworzyć tablicę punktów czyli współrzędnych wierzchołków nie mam pojęcia jak się za to zabrać proszę o jakieś wskazówki
    chodzi mi o to że po kliknięciu myszą w panel wyświetli mi się w tym miejscu trójkąt prostokątny
    z góry dziękuje wszystkim

    0 6
  • Pomocny post
    #2 15 Sty 2012 19:31
    marcinj12
    Poziom 40  

    A z czym konkretnie masz problem, bo to jakoś z Twojego postu nie wynika ("nie mam pojęcia jak się za to zabrać" konkretem nie jest ;P)?

    Masz już całą klasę tworzącą trójkąt, masz konstruktor przyjmujący tablicę punktów, masz metodę rysującą - jeszcze tylko trzeba dopisać do klasy publiczną właściwość Punkty typu Point[] i na niej operować.

    Ten interfejs to Twój wybór? Bo metoda Contains() do rysowania potrzebna nie jest - jeżeli jest zawarta w interfejsie, to ją też należy ją zaimplementować.

    Ponadto, nie wiem czy użycie tablicy Point[] w takiej postaci jest dobrym pomysłem w klasie Trójkąt: tak naprawdę możesz do niej przekazać dowolną tablicę punktów - cztery, pięć lub więcej, a ta klasa bez szmerania ją przyjmie i narysuje.

    Jeżeli ma być to ściśle trójkąt, może lepiej przekazać 3 punkty współrzędnych: x, y i z, podobnie jak w kole tylko klasy Point, i z nich wewnątrz klasy stworzyć 3-elementową tablicę Point[]? w metodzie Draw() ?

    Ewentualnie w metodzie set { ... } dla tablicy punktów należało by sprawdzić, czy długość tablicy = 3, a jeżeli nie - np. zgłosić wyjątek.

    Drugie zagadnienie którego nie zostało sprecyzowane - skoro chcesz rysować trójkąt prostokątny, jak chcesz sprawdzić (jeśli w ogóle chcesz to sprawdzać), czy przekazane współrzędne 3 punktów "nadają się" na stworzenie trójkąta prostokątnego?

    0
  • #3 15 Sty 2012 19:38
    walek33
    Poziom 28  

    :arrow: marcinj12
    Kopernik była kobietą... :D

    0
  • #4 15 Sty 2012 20:01
    marcinj12
    Poziom 40  

    :arrow:walek33
    Chyba za Kolegą nie nadążam...
    Czy to delikatna sugestia, że pomyliłem płeć autora?? ;) Jeśli tak - poprawię ;)
    Z postu to wprost nie wynika, żadnych am'ów nie zauważyłem, a nick... może i owszem, dopiero teraz popatrzyłem, jednak dla mnie nick wyznacznikiem nie jest - inaczej Kolega byłby sprzętem użytku kuchennego, piszącym posty z niepolskiego systemu...;)
    Może to Karol ;)
    ---
    Tak czy inaczej - edytowałem posta na wersję unisex ;)

    0
  • Pomocny post
    #5 15 Sty 2012 23:36
    alberthus
    Poziom 16  

    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    Klasa rysująca trójkąt prostokątny.

    Pozdrawiam.

    0
  • #6 15 Sty 2012 23:42
    walek33
    Poziom 28  

    Cytat:
    Może to Karol
    Tak też może być. :D
    Ale przecież jesteśmy tolerancyjni a Ty wybrnąłeś dyplomatycznie. :D
    Tak sobie przynajmniej pomyślałem(am). :D

    0
  • #7 15 Sty 2012 23:59
    karola7475
    Poziom 7  

    alberthus wielkie dzięki za pomoc :D :D
    również dziękuje pozostałym osobom za udzielone wskazówki :D
    a tak dla jasności to jestem kobietą
    pozdrawiam Karolina

    0