Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 12 gru 2024, o 15:54


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 27 ] 
Autor Wiadomość
PostNapisane: 14 cze 2015, o 14:09 
Offline
Użytkownik

Dołączył(a): 08 maja 2014
Posty: 61
Pomógł: 1

Witam serdecznie wszystkich użytkowników.

Od kilku dni szukam informacji / rozwiązań na temat interaktywnych - graficznych obiektów.
O co tu się rozchodzi. Chciałbym zacząć robić coś na wzór elektrycznego CAD'a
w stylu SEE Electrical, EPlan i tym podobne, oczywiście nie w tak zaawansowanym stopniu xD
Męczę się z jedną rzeczą. Nie potrafię sobie wyobrazić w jaki sposób można zrobić dla przykładu - Połączenie.
Chodzi o nic innego jak linie, którą można zaznaczyć, zmienić właściwości, kolor, przenieść w inne miejsce.
W bardzo prosty sposób można narysować linię, ale jest to jedynie zbiór czarnych pikseli na bitmapie.
Mam barierę mózgową która mnie powstrzymuje. Czy ktoś już kiedyś robił coś podobnego i mógł by mnie
nakierować?

Dziękuję i pozdrawiam, Maciek.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2015, o 14:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 maja 2014
Posty: 317
Pomógł: 19

Cześć,

Co prawda nie programuję w C#, ale mogę coś na ten temat napisać.
komandos332 napisał(a):
(...)oczywiście nie w tak zaawansowanym stopniu xD (...)
Nie chciałbym Cię zniechęcać, bo pomysł masz bardzo zacny. W każdym razie ten projekt mimo iż miałby być bardzo prosty do takich całkiem prostych należeć nie będzie. Musisz rozdzielić pewne sprawy: GUI, I/O no i inne sprawy typu algorytmy sterujące, interface'y..

komandos332 napisał(a):
(...)Męczę się z jedną rzeczą. Nie potrafię sobie wyobrazić w jaki sposób można zrobić dla przykładu - Połączenie.
Chodzi o nic innego jak linie, którą można zaznaczyć, zmienić właściwości, kolor, przenieść w inne miejsce.
Implementujesz klasę linia, dodajesz do niej funkcje składowe odpowiedzialne za rysowanie, zdarzenia myszy, etc. oraz dodajesz niezbędne zmienne składowe takie właśnie jak kolor, długość linii, etc.
Potem w kodzie ilekroć Ktoś będzie chciał narysować nowe połączenie, linię - tworzy się obiekt klasy Linia.
Tylko, że pomyśl o tym, że oprócz klasy Linia powinny być inne klasy odpowiedzialne za inne sytuacje, no i oczywiście to musi ze sobą współgrać.

Nie bardzo wiem co mógłbym Tobie polecić za książkę... W każdym razie ja korzystałem z książki "OpenGL. Księga eksperta", R.Wright, B.Lipchak
To jest trochę stara książka, nie o C# tylko o C++ i OpenGL, ale jest tam rozdział właśnie o grafice interaktywnej, który powinieneś przeczytać.

Nie wykluczam, że są nowe i lepsze książki oraz, że w samym C# implementuje się te sprawy dużo prościej.

Pozdrawiam! j23 Jarek

_________________
"O sygnałach bez całek" Czesław Frąc



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2015, o 14:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8587
Pomógł: 337

TYM razem PRZENOSZĘ ... ale najpierw należy przeczytać zasady działu...
A nie wrzucać co się chce gdzie się chce


Autor postu otrzymał pochwałę

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2015, o 18:25 
Offline
Użytkownik

Dołączył(a): 08 maja 2014
Posty: 61
Pomógł: 1

@j23 Twoja odpowiedź mnie bardzo zmotywowała. Wydaje mi się że znalazłem coś interesującego - zabieram się do kodzenia.
Po uzyskaniu konkretnych rezultatów od razu się podzielę ^^



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2015, o 19:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 maja 2014
Posty: 317
Pomógł: 19

komandos332 napisał(a):
@j23 Twoja odpowiedź mnie bardzo zmotywowała. Wydaje mi się że znalazłem coś interesującego - zabieram się do kodzenia.
Po uzyskaniu konkretnych rezultatów od razu się podzielę ^^

Jeżeli mogę coś jeszcze doradzić dla uproszczenia sprawy...
Spróbuj na początek zrobić taką aplikację (nr 1): puste okno + wskaźnik myszy (obsługa zdarzeń myszy). Wówczas pierwsze kliknięcie myszy tworzy pierwszy obiekt i zarazem obiera współrzędne początkowe, współrzędne końcowe tam gdzie wskaźnik myszy (efekt poruszania linią). Drugie kliknięcie myszy zatwierdza współrzędne końcowe linii (pierwsza linia stworzona) i przygotowuje aplikację do stworzenia kolejnego obiektu (kolejnej linii) -kiedy nastąpi kolejne kliknięcie myszą. ;)
Jak to już będziesz miał zrobione, to spróbuj zrobić sobie kolejną aplikację (nr 2), gdzie będziesz miał tabelkę narzędziową dla rysowanej linii, która umożliwi wybór koloru, czy grubość linii. Kolejna aplikacja (nr 3) to zaimplementuj sobie tabelkę narzędziową, gdzie już będzie wybór narzędzia, np. tworzenie linii, kwadratu, nie wiem co tam jeszcze chcesz. Kolejna aplikacja.. i tak krok po kroczku... ;) ..i zrobisz kombajn CAD'owski, czego szczerze Ci życzę! Jak widzisz to jest taka agregacja jeżeli chodzi o stopień skomplikowania aplikacji i zawczasu gdy zaczniesz kodzić spróbuj sobie narysować tą agregację/zależności klas na... kartce. ;) Inaczej zakopiesz się w kodzie...

Pozdrawiam! j23 Jarek

_________________
"O sygnałach bez całek" Czesław Frąc



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2015, o 20:06 
Offline
Użytkownik

Dołączył(a): 08 maja 2014
Posty: 61
Pomógł: 1

Takie rzeczy już mam opanowane o których mówisz, w sensie rysowania. Zrobiłem już nawet takiego Painta do linii, z możliwością dodawania nowych kart (stron schematu) i rysowanie linii. Chodzi o to, żeby ta linia była interaktywnym obiektem ale to też już ogarnąłem. Podglądnąłem trochę budowę struktury Rectangle i stworzyłem swoją Line, wszystko mi działa. Teraz mam inny problem. Struktura Rectangle ma bardzo przyjemną metodę Contains(Point p) która sprawdza czy punkt
np e.Location w zdarzeniu z MouseEventArgs jest w polu kwadratu. Teraz muszę zrobić to samo z tym, że do linii, co jest wbrew pozorom trudniejsze, bo potrzebuję sobie
zrobić jakąś tablicę typu Point które dana linia zajmuje. Gdybym ograniczył CAD'a do linii tylko w osi X lub Y - to był by mniejszy problem, ale tu nie o to chodzi żeby iść
tak na skróty. Muszę napisać taki algorytmik sprawdzający punkty tej linii. W przypadku Rectangle wygląda to pewnie tak:

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Proste, ale w przypadku linii? Musiał bym się dostać do środka klasy Graphics i jej metody DrawLine i sprawdzić na jakiej podstawie ona
rysuje tę linię, zgadza się? Jeżeli mój mózg gdzieś popełnił gafę to proszę o poprawkę ^^



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2015, o 21:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 maja 2014
Posty: 317
Pomógł: 19

komandos332 napisał(a):
(...)Gdybym ograniczył CAD'a do linii tylko w osi X lub Y - to był by mniejszy problem, ale tu nie o to chodzi żeby iść
tak na skróty. Muszę napisać taki algorytmik sprawdzający punkty tej linii.(...)
Jeżeli chodzi Ci o to, czy dany punkt leży na prostej, to wystarczy zerknąć do wzorów matematyki z geometrii, a potem napisać algorytm z warunkiem podobnym do tego który przedstawiłeś, z tym że sprawdzasz w nim zgodnie ze wzorem matematycznym czy punkt leży na prostej.

Pozdrawiam! j23

_________________
"O sygnałach bez całek" Czesław Frąc



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2015, o 21:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8587
Pomógł: 337

chodzi ci o coś takiego ??

Banalne w sumie ....


Autor postu otrzymał pochwałę

Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2015, o 21:21 
Offline
Użytkownik

Dołączył(a): 08 maja 2014
Posty: 61
Pomógł: 1

SunRiver napisał(a):
chodzi ci o coś takiego ??

Banalne w sumie ....


@SunRiver - Jeżeli Ty to zrobiłeś na kolanie to ja chyba powinienem zrezygnować z programowania...
Ile ja się naszukałem takiej biblioteki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2015, o 21:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8587
Pomógł: 337

to się pisze nie szuka :)

a libsik.. do zapisu tylko własnego formatu plików :)

nic wielkiego w tym niema używam przede wszystkim System.Drawing.Drawing2D

zresztą tak wygląda DrawLine.cs

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 cze 2015, o 16:55 
Offline
Użytkownik

Dołączył(a): 08 maja 2014
Posty: 61
Pomógł: 1

Pewnie pomyśleliście, że temat umarł. Tak się nie stało a przez te 6 dni cały czas pracowałem i chcę teraz pochwalić się moimi postępami :)

Ctrl + E - tryb edycji
Ctrl + D - tryb rysowania
Ctrl + A - zaznacz wszystko
Del - Usuń
W trybie edycji jest dostępny multiselect przez przeciąganie myszy.

Narazie stworzyłem tylko trzy obiekty:

- SingleLine - Połączenie. Jego główną właściwością jest potencjał linii czyli napięcia. Tworząc jedną linię przyjmuje ona potencjał wybrany lub wpisany
w ComboBox'ie. Tworząc drugą linię, zaczynając od poprzedniej automatycznie dziedziczy ona potencjał tej pierwszej, lub zaczynając na pustym polu i kończąc
na jakieś linii nowa linia dziedziczy ona potencjał linii na której została upuszczona. Po wykonaniu takiej czynności zostaje automatycznie dodany obiekt klasy
- ConnectionPoint - Nie ma on żadnych właściwości, tworzy się po połączeniu dwóch linii.
- GraphicGrid - Po prostu siatka.

Naciskając dwukrotnie na początek lub koniec linii zostanie wyświetlona strzałka skierowana w stronę w którą była tworzona linia oraz podpis potencjału.
Piszę, żebyście wiedzieli szanowni użytkownicy którzy byli skłonni mi odpowiedzieć i pomóc: j23 i SunRiver, że podszedłem do sprawy na poważnie xD

Z czym się aktualnie zmagam?

Działanie skrótów klawiszowych:

Ctrl + C
Ctrl + V
Ctrl + Z

Co potem? Stworzę trzy kolejne podstawowe klasy:

Master - Cewka przekaźnika, stycznika itp.
Slave - Styki przekaźników. Będę musiał stworzyć między nimi powiązania przez adresy krosowe - mam koncept plan.
Kanały PLC - interpretacja przez program wejść i wyjść sterowników PLC stosowanych w przemyśle.

Co o tym myślicie?

Chyba jestem dziwny, przy pisaniu tego posta nacisnąłem Ctrl + Shift + S chyba z 10 razy...


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 cze 2015, o 20:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 maja 2014
Posty: 317
Pomógł: 19

Coraz ciekawiej się robi... :) -i bardzo dobrze. :)

Z tym CTRL+C to jest różnie, bo to zależy jak i ile obiektów ma być przechowane w zmiennej tymczasowej, dopóki nie nastąpi CTRL+V.
Generalnie stosujesz tutaj wskaźnik na obiekt, który już jest utworzony i potem na tej podstawie tworzysz nowy obiekt z tymi samymi zmiennymi składowymi jak oryginał (oprócz współrzędnych punktu 0,0, żeby nie nastąpiło "przykrycie" obiektów), Z TYM że... jeśli to ma być najpierw jakieś zaznaczenie w postaci, np. przeźroczystego prostokąta zaznaczenia to tak prosto nie jest, bo najpierw trzeba stworzyć osobną klasę, która będzie -(w odpowiedni sposób uzależniony od GUI)- indeksowała zaznaczone elementy/obekty na ekranie... Prościej jest zaznaczać i kopiować KONKRETNY obiekt na scenie.

Pozdrawiam! j23 Jarek

_________________
"O sygnałach bez całek" Czesław Frąc



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 cze 2015, o 20:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8587
Pomógł: 337

hmm.... nio ma to już jakiś głębszy sens i jakiś styl ,... zaczyna się wyłaniać ...
niemniej na tym etapie program strasznie męczy ....
co do skrótów ... trzymaj się standardu i użyj poprostu dostępnych w libsach od gui clas
:)

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 cze 2015, o 21:19 
Offline
Użytkownik

Dołączył(a): 08 maja 2014
Posty: 61
Pomógł: 1

Dzięki za odpowiedzi :D Bardzo mi miło, że ktoś zwrócił uwagę na to moje coś :)

j23 - Właśnie chodzi o to, że chciałbym kopiować obiekty różnych klas w jednym czasie, jak na CAD'a przystało ^^
SunRiver - jeszcze nie wiem o jakie libsiki Ci chodzi, ale poszukam :P

Pozdrawiam, Maciek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 cze 2015, o 00:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 maja 2014
Posty: 317
Pomógł: 19

komandos332 napisał(a):
j23 - Właśnie chodzi o to, że chciałbym kopiować obiekty różnych klas w jednym czasie, jak na CAD'a przystało ^^
(...)
Pytanie tylko ile zakładasz, że będzie "wartstw" w programie.. W zależności od ilości warstw (top, bottom, ? nie wiem jeszcze czy coś dodatkowo), to z programu 2d robi się już taki lekki program 3d, chyba że zakładasz, że prostokąt zaznaczania będzie zaznaczał tylko to co widać.
Jak tylko 2d to indeksowanie wskaźników na obiekty (mam na myśli elementy na scenie) leci po x i y, jeśli 3d to leci po x, y i z. Jeżeli 3d to trzeba się trochę przyłożyć do dobrego zaprojektowania tej głębi (oś z), żeby program sprawnie działał. Z reguły w takim prostym programie CAD nie ma zbyt wielu warstw, więc nie ma potrzeby rezerwowania na zmienną zbyt wiele pamięci.
Jeszcze jedna sprawa: Teraz pytasz o zwykły prostokąt zaznaczania, ale być może gdy już mowa o zaznaczaniu to za chwilę będzie mowa o wielokrotnym zaznaczaniu, czyli coś jest zaznaczone i teraz CTRL i następuje kolejne zaznaczanie (dodawanie/odejmowanie do/od zaznaczania) - czyli taka lekka komplikacja.
Gdyby to miał być program w C++ to dla mnie prostokątem zaznaczania byłaby dodatkowa klasa (abstrakcyjna), tzn. nie odnosząca się do żadnego konkretnego obiektu na scenie, która potrafi zindeksować obiekty gdy następuje zdarzenie typu "zaznaczanie". Jak miało by to być skomplikowane, a więc dodawanie/odejmowanie od zaznaczania... -to trzeba by użyć albo dodatkowego klawisza (typu shift/ctrl/alt) wciśniętego lub nie, albo wcześniej przed zaznaczeniem zrobić np. jakieś trzy pola radiobox (dodawanie/odejmowanie od zaznaczenia, zaznaczanie na nowo). Indeksowanie (tzn. instrukcja warunkowa czy dany obiekt jest w obrębie prostokąta zaznaczenia czy nie) obiektów na scenie następuje jako ostatnia instrukcja sprawdzająca. Przed tą instrukcją sprawdza się, czy użytkownik chce coś zaznaczyć (warunek: wciśnięty klawisz myszy i OnMouseOver nad jakimś obiektem sceny).

Nie znam się zbyt dobrze na C#, ale być może SunRiver'owi chodziło o coś w tym rodzaju:
http://zetcode.com/gui/csharpwinforms/dragdrop/

Ambitny program.. :) Nie ma co.. Trzymam kciuki!

Pozdrawiam! j23

_________________
"O sygnałach bez całek" Czesław Frąc



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 cze 2015, o 05:39 
Offline
Użytkownik

Dołączył(a): 08 maja 2014
Posty: 61
Pomógł: 1

j23 napisał(a):
Jak miało by to być skomplikowane, a więc dodawanie/odejmowanie od zaznaczania... -to trzeba by użyć albo dodatkowego klawisza (typu shift/ctrl/alt) wciśniętego lub nie


To wszystko już działa. Ctrl + E - przejście do trybu edycji.

Ctrl + zaznaczenie obszaru - zaznacza obiekty znajdujące się w obszarze.
Ctrl + Pojedyncze kliknięcia na każdy obiekt osobno dodaje obiekt do puli zaznaczonych.

Ogólnie Ctrl służy do przenoszenia. Klikając na jakiś obiekt pojedynczy można go przenieść, ale chcąc przenieść większą
grupę obiektów trzeba robić to z Ctra + A lub Ctrl i MultiselectRectangle lub też Ctrl + wybranie obiektów
przez kliknięcia.

Jeśli chodzi o klonowanie - Znalazłem ciekawą metodę MemberwiseClone() - zwraca obiekt. Każdy z moich obiektów jest zaopatrzony we właściwość
isSelected. Przy zdarzeniu Ctrl + C przelecę wszystkie obiekty i jeżeli isSelected jest prawdziwe - tworzę klona do jakiegoś stocka.
Przy zdarzeniu PreviewKeyPress jeżeli wciśnięte będzie Ctrl + V, wale obiekty na ekran :D
Nie mam jeszcze pomysłu na to jak zrobić Ctrl + Z. Ale spokojnie, jestem uparty i się nie poddam ^^

@edit
Klonowanie okazało się pestką. Teraz czas na Ctrl + Z :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 cze 2015, o 15:16 
Offline
Użytkownik

Dołączył(a): 08 maja 2014
Posty: 61
Pomógł: 1

Pytanie.

Czy ktoś wie, jak zserialozować BinaryFormatter'em kontrolki, które nie są oznaczone jako [Serializable]?
Próbowałem utworzyć nową klasę np SerializabliePictureBox, która dziedziczy z PictureBox i ustawić ją
jako [Serializable] - niestety bez rezultatów. Czy jest możliwość zapisania kontrolek w inny sposób?
Np w XML? Spotkał się już ktoś z takim zagadnieniem? ^^



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 cze 2015, o 15:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8587
Pomógł: 337

Patrzyłeś tu:

https://msdn.microsoft.com/en-us/librar ... r(v=vs.110).aspx
https://msdn.microsoft.com/en-us/librar ... r(v=vs.110).aspx

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 cze 2015, o 16:17 
Offline
Użytkownik

Dołączył(a): 08 maja 2014
Posty: 61
Pomógł: 1

Patrzyłem, być może nie uważnie ale nie wydaje mi się.
Chodzi o to, że nie można serializować PictureBox'a tak po prostu.

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


SunRiver - Wiem, że nie lubisz mistrzowania więc nie będę się podlizywał, ale może widzisz jakieś moje niedopatrzenie? :)

Próbuję cały czas.



Ostatnio edytowano 24 cze 2015, o 21:13 przez komandos332, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 cze 2015, o 18:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8587
Pomógł: 337

komandos332 napisał(a):
ale może widzisz jakieś moje niedopatrzenie?


Widzę ... strasznie kuje w oczy ...
ale na razie ci nie podpowiem bo wisi tak bezczelnie na wierzchu ...

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 cze 2015, o 21:13 
Offline
Użytkownik

Dołączył(a): 08 maja 2014
Posty: 61
Pomógł: 1

Jeżeli chodzi o tą jedną dodatkową klamrę, to nie to ma znaczenie chociaż babol wiem.
Zmieniałem kod w SYNTAX'ie i nie zaznaczyłem tej jednej, już poprawione.
Mój błąd, w kodzie tego nie było.

Problem w tym, że klasa PictureBox nie jest [Serializable].
Mógłbym serializować wszystkie właściwości PictureBoxa osobno.
Nie zadowala mnie jednak takie coś. Chciałbym serializować całego PictureBoxa
na raz pisząc Serialize(pictureBox1). Jedyne rozwiązanie jakie przychodzi mi aktualnie do głowy, to stworzyć
metodę, która z przekazanego parametru PictureBox wyciąga wszystkie potrzebne właściwości
i je serializuje, oraz drugą która z podanego pliku deserializuje wszystkie zserializowane właściwości
i zwraca typ PictureBox już z konkretnymi właściwościami.
Jeżeli da się prościej, to byłbym zobowiązany za jakąś poradę :)

Tymczasem, późna godzina. Dobrej nocy życzę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 cze 2015, o 23:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 maja 2014
Posty: 317
Pomógł: 19

komandos332 napisał(a):
(...)Jedyne rozwiązanie jakie przychodzi mi aktualnie do głowy, to stworzyć
metodę
, która z przekazanego parametru PictureBox wyciąga wszystkie potrzebne właściwości
i je serializuje, oraz drugą która z podanego pliku deserializuje wszystkie zserializowane właściwości
i zwraca typ
PictureBox już z konkretnymi właściwościami.
Stworzyć metodę, albo klasę... To jest najbardziej logiczne. Zależy jak to tam zaplanowałeś. Z kodem Ci nie pomogę, bo C#'a po prostu jeszcze dobrze nie znam. Gdybym to robił w C++ to prawdopodobnie stworzyłbym do tego zadania klasę z potrzebnymi metodami, żeby potem nie tracić czasu, tylko ją wywoływać podczas serializacji i deserializacji danych. O ile w bibliotekach IDE takiej klasy nie ma...

Pozdrawiam! j23 Jarek

_________________
"O sygnałach bez całek" Czesław Frąc



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 wrz 2015, o 10:27 
Offline
Użytkownik

Dołączył(a): 08 maja 2014
Posty: 61
Pomógł: 1

Witam wszystkich!

Nie pisałem w tym wątku nic od prawie 4 miesięcy. Wszyscy pewnie pomyśleli, że się poddałem. Otóż nie, przez ten czas zdążyłem zacząć od nowa trzy razy.
Za każdym razem z nową, lepszą koncepcją. Wielkimi krokami zbliżam się do wypuszczenia pierwszej wersji mojego programu do rysowania schematów
instalacji elektrycznych i automatyki. Jak na razie, program ma naprawdę wiele bugów które wiem skąd się biorą ale nie poświęcam im teraz czasu tylko brnę
przed siebie w tym lesie kodu xD Długi, brzydki filmik ilustrujący tworzenie swoich interaktywnych obiektów. Radzę dać sobie na YT podwójną prędkość, żeby nie tracić czasu ^^



Pozdrawiam wszystkich forumowiczów!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 wrz 2015, o 17:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 maja 2014
Posty: 317
Pomógł: 19

komandos332 napisał(a):
(...)Jak na razie, program ma naprawdę wiele bugów które wiem skąd się biorą ale nie poświęcam im teraz czasu tylko brnę
przed siebie w tym lesie kodu xD Długi, brzydki filmik ilustrujący tworzenie swoich interaktywnych obiektów.(...)
"No pain no gain" - najważniejsze, że powoli swój pomysł przekształcasz w coś co widać, że działa. Bugi i poprawki w kodzie (i cofanie się do miejsc, gdzie działało lepiej) to normalne sytuacje w tworzeniu jakiegokolwiek programu. Ja osobiście chylę przed Tobą czoła, że pieczołowicie zabrałeś się do takiej pracy, nie poddajesz się i konsekwentnie dążysz do celu.

Pozdrawiam! Jarek

P.S. A filmik jest spoko. Nagrywanie etapów (dokumentowanie) tworzenia to także dobry zwyczaj (choć czasochłonny) tworzenia dobrego kodu.

_________________
"O sygnałach bez całek" Czesław Frąc



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2015, o 18:09 
Offline
Użytkownik

Dołączył(a): 08 maja 2014
Posty: 61
Pomógł: 1

Witam wszystkich bardzo serdecznie!

Co tu dużo mówić. Zbliżam się do końca wielkimi krokami.
Oto krótki filmik z moim gotowym projektem i przyjemną muzyczką w tle
(Jeśli filmik Wam się znudzi, to sobie przynajmniej posłuchacie).

Nie wiem czy ktoś z Was ma doświadczenie w projektowaniu schematów
elektrycznych i automatyki jeśli jednak mamy na forum taką osobę
to byłbym rad gdyby ktoś zechciał przetestować ten program po ukończeniu.



Miłego!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2015, o 18:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8587
Pomógł: 337

no zobaczymy co tam stworzyłeś ... :)
jak będzie sensowna wersja release :)

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2016, o 10:14 
Offline
Użytkownik

Dołączył(a): 08 maja 2014
Posty: 61
Pomógł: 1

Witam serdecznie.

Moje półroczne wypociny praktycznie gotowe. Nie chce mi się za bardzo opisywać co jak działa, ponieważ program ma tak mało funkcji (ograniczone do minimum) że każdy kto choć trochę gryzł takie programy będzie wiedział o co chodzi. Krytyka mile widziana, screeny ewentualnych wyjątków również
z opisem w jakiej sytuacji doszło do wystąpienia wyjątku ^^ Biorąc pod uwagę prawie 20 tysięcy linii kodu takie informacje są bardzo przydatne :D
Sun, j23 - liczę na waszą jak zawsze konstruktywną krytykę.


Jednak coś napiszę. Można tworzyć swoje obiekty rysując je za pomocą prostokątów, linii (nie połączeń!), okręgów i tekstu. Aby stworzyć obiekt jak w każdym innym programie zaznaczamy nasze arcydzieło, klikamy prawym i dajemy Grupuj, lub po prostu wciskamy Ctrl + G. Każe nam podać Rdzeń oznaczenia, czyli na przykład dla bezpiecznika F, termika Q, jak chcecie. Jeżeli obiekt ma jakieś przyłącza/zaciski muszą być narysowane za pomocą linii. Po zgrupowaniu obiektu na taką linię klikamy dwukrotnie i każe nam podać nazwę zacisku. Wpisujemy sobie np DI0 i naciskamy ok, po czym program nas pyta, czy chcemy aby z tego zacisku wychodziło połączenie nazwie (Nazwa obiektu)/DI01, po co? No po to, że jeżeli narysujemy transformator, to na wejściach sobie zrobimy 2 linie, które nazwiemy L i N w których nie chcemy, żeby wychodziło z nich jakiekolwiek połączenie. Z drugiej strony transformatora damy sobie przykładowo L24 i N24, tu z kolei wybierzemy opcję TAK, żeby z tych zacisków wychodziło jakieś połączenie. Nie musimy myśleć o nazywaniu każdej linii.

Po dodaniu styku przekaźnika, można przypisać do niego cewkę klikając dwukrotnie na wstawiony styk i wybierając odpowiednią cewkę. Przy cewce zostanie umieszczona tabelka styków po dodaniu pierwszego styku.

To tyle, jeśli chodzi o niejasności. Bawcie się jak najwięcej i czekam na odpowiedzi :)





ZAPOMNIAŁEM DODAĆ! Pomiędzy stronami przechodzi się scrollem. Żeby dodać element trzeba być w trybie edycji.


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 27 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO