<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=48&amp;t=12008&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-01-14T10:14:16+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=48&amp;t=12008&amp;mode</id>
<entry>
<author><name><![CDATA[komandos332]]></name></author>
<updated>2016-01-14T10:14:16+01:00</updated>
<published>2016-01-14T10:14:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=150555#p150555</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=150555#p150555"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=150555#p150555"><![CDATA[
Witam serdecznie.<br /><br />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ż<br />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 <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br />Sun, j23 - liczę na waszą jak zawsze konstruktywną krytykę.<br /><br /><br />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.<br /><br />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.<br /><br />To tyle, jeśli chodzi o niejasności. Bawcie się jak najwięcej i czekam na odpowiedzi <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><br /><br /><br /><br />ZAPOMNIAŁEM DODAĆ! Pomiędzy stronami przechodzi się scrollem. Żeby dodać element trzeba być w trybie edycji.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4299">komandos332</a> — 14 sty 2016, o 10:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2015-11-05T18:15:18+01:00</updated>
<published>2015-11-05T18:15:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=144480#p144480</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=144480#p144480"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=144480#p144480"><![CDATA[
no zobaczymy co tam stworzyłeś ... <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />jak będzie sensowna wersja release <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 5 lis 2015, o 18:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[komandos332]]></name></author>
<updated>2015-11-05T18:09:12+01:00</updated>
<published>2015-11-05T18:09:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=144475#p144475</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=144475#p144475"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=144475#p144475"><![CDATA[
Witam wszystkich bardzo serdecznie!<br /><br />Co tu dużo mówić. Zbliżam się do końca wielkimi krokami.<br />Oto krótki filmik z moim gotowym projektem i przyjemną muzyczką w tle<br />(Jeśli filmik Wam się znudzi, to sobie przynajmniej posłuchacie).<br /><br />Nie wiem czy ktoś z Was ma doświadczenie w projektowaniu schematów<br />elektrycznych i automatyki jeśli jednak mamy na forum taką osobę<br />to byłbym rad gdyby ktoś zechciał przetestować ten program po ukończeniu.<br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><br /><br />Miłego!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4299">komandos332</a> — 5 lis 2015, o 18:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[j23]]></name></author>
<updated>2015-09-24T17:31:44+01:00</updated>
<published>2015-09-24T17:31:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=140570#p140570</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=140570#p140570"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=140570#p140570"><![CDATA[
<div class="quotetitle">komandos332 napisał(a):</div><div class="quotecontent"><br />(...)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ę<br />przed siebie w tym lesie kodu xD Długi, brzydki filmik ilustrujący tworzenie swoich interaktywnych obiektów.(...)<br /></div>&quot;No pain no gain&quot; - 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.<br /><br />Pozdrawiam! Jarek<br /><br />P.S. A filmik jest spoko. Nagrywanie etapów (dokumentowanie) tworzenia to także dobry zwyczaj (choć czasochłonny) tworzenia dobrego kodu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4504">j23</a> — 24 wrz 2015, o 17:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[komandos332]]></name></author>
<updated>2015-09-14T10:27:28+01:00</updated>
<published>2015-09-14T10:27:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=139792#p139792</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=139792#p139792"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=139792#p139792"><![CDATA[
Witam wszystkich!<br /><br />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.<br />Za każdym razem z nową, lepszą koncepcją. Wielkimi krokami zbliżam się do wypuszczenia pierwszej wersji mojego programu do rysowania schematów<br />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ę<br />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 ^^<br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><br /><br />Pozdrawiam wszystkich forumowiczów!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4299">komandos332</a> — 14 wrz 2015, o 10:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[j23]]></name></author>
<updated>2015-06-24T23:58:47+01:00</updated>
<published>2015-06-24T23:58:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132781#p132781</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132781#p132781"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132781#p132781"><![CDATA[
<div class="quotetitle">komandos332 napisał(a):</div><div class="quotecontent"><br />(...)Jedyne rozwiązanie jakie przychodzi mi aktualnie do głowy, <strong>to stworzyć<br />metodę</strong>, która z przekazanego parametru <span style="color: #40BFFF">PictureBox</span> wyciąga wszystkie potrzebne właściwości<br />i je serializuje, <strong>oraz drugą która z podanego pliku deserializuje wszystkie zserializowane właściwości<br />i zwraca typ</strong> <span style="color: #40BFFF">PictureBox</span> już z konkretnymi właściwościami.<br /></div>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...<br /><br />Pozdrawiam! j23 Jarek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4504">j23</a> — 24 cze 2015, o 23:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[komandos332]]></name></author>
<updated>2015-06-24T21:13:24+01:00</updated>
<published>2015-06-24T21:13:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132770#p132770</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132770#p132770"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132770#p132770"><![CDATA[
Jeżeli chodzi o tą jedną dodatkową klamrę, to nie to ma znaczenie chociaż babol wiem.<br />Zmieniałem kod w SYNTAX'ie i nie zaznaczyłem tej jednej, już poprawione.<br />Mój błąd, w kodzie tego nie było.<br /><br />Problem w tym, że klasa <span style="color: #40BFFF">PictureBox</span> nie jest [<span style="color: #40BFFF">Serializable</span>].<br />Mógłbym serializować wszystkie właściwości <span style="color: #40BFFF">PictureBoxa</span> osobno.<br />Nie zadowala mnie jednak takie coś. Chciałbym serializować całego <span style="color: #40BFFF">PictureBoxa</span><br />na raz pisząc Serialize(pictureBox1). Jedyne rozwiązanie jakie przychodzi mi aktualnie do głowy, to stworzyć<br />metodę, która z przekazanego parametru <span style="color: #40BFFF">PictureBox</span> wyciąga wszystkie potrzebne właściwości<br />i je serializuje, oraz drugą która z podanego pliku deserializuje wszystkie zserializowane właściwości<br />i zwraca typ <span style="color: #40BFFF">PictureBox</span> już z konkretnymi właściwościami.<br />Jeżeli da się prościej, to byłbym zobowiązany za jakąś poradę <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Tymczasem, późna godzina. Dobrej nocy życzę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4299">komandos332</a> — 24 cze 2015, o 21:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2015-06-24T18:39:15+01:00</updated>
<published>2015-06-24T18:39:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132748#p132748</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132748#p132748"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132748#p132748"><![CDATA[
<div class="quotetitle">komandos332 napisał(a):</div><div class="quotecontent"><br />ale może widzisz jakieś moje niedopatrzenie?<br /></div><br /><br />Widzę ... strasznie kuje w oczy ... <br />ale na razie ci nie podpowiem bo wisi tak bezczelnie na wierzchu ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 24 cze 2015, o 18:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[komandos332]]></name></author>
<updated>2015-06-24T21:13:38+01:00</updated>
<published>2015-06-24T16:17:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132742#p132742</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132742#p132742"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132742#p132742"><![CDATA[
Patrzyłem, być może nie uważnie ale nie wydaje mi się.<br />Chodzi o to, że nie można serializować PictureBox'a tak po prostu.<br /><br />[syntax=csharp]using System;<br />using System;<br />using System.Collections.Generic;<br />using System.ComponentModel;<br />using System.Data;<br />using System.Drawing;<br />using System.Linq;<br />using System.Text;<br />using System.Threading.Tasks;<br />using System.Windows.Forms;<br />using System.Runtime.Serialization.Formatters.Binary;<br />using System.Runtime.Serialization;<br />using System.IO;<br /><br />namespace PictureBoxSerialize<br />{<br />    public partial class Form1 : Form<br />    {<br />        public Form1()<br />        {<br />            InitializeComponent();<br /><br />        }<br /><br />        private void button1_Click(object sender, EventArgs e)<br />        {<br />            FileStream fs = new FileStream(@&quot;C:\Users\Public\ZserializowanyPictureBox.dat&quot;, FileMode.Create);<br />            BinaryFormatter bf = new BinaryFormatter();<br /><br />            try<br />            {<br />                Type requestType = typeof(PictureBox);<br />                StreamingContext streamingContext = new StreamingContext(StreamingContextStates.All, pictureBox1);<br />                bf.Serialize(fs, pictureBox1.CreateObjRef(requestType).GetRealObject(streamingContext));<br />                MessageBox.Show(pictureBox1.Name + &quot; został zserializowany.&quot;, &quot;Informacja&quot;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />                fs.Close();<br />            }<br />            catch (Exception ex)<br />            {<br />                MessageBox.Show(&quot;Niestety, nie udało się zserializować obiektu &quot; + pictureBox1.Name + &quot;\n\n&quot; + ex.Message,<br />                    &quot;Błąd&quot;, MessageBoxButtons.OK, MessageBoxIcon.Error);<br />                fs.Close();<br />            }<br /><br />        }<br />    }<br />}[/syntax]<br /><br />SunRiver - Wiem, że nie lubisz mistrzowania więc nie będę się podlizywał, ale może widzisz jakieś moje niedopatrzenie? <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Próbuję cały czas.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4299">komandos332</a> — 24 cze 2015, o 16:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2015-06-24T15:45:53+01:00</updated>
<published>2015-06-24T15:45:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132740#p132740</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132740#p132740"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132740#p132740"><![CDATA[
Patrzyłeś tu:<br /><br /><!-- m --><a class="postlink" href="https://msdn.microsoft.com/en-us/library/system.runtime.serialization.serializationbinder(v=vs.110" >https://msdn.microsoft.com/en-us/librar ... r(v=vs.110</a><!-- m -->).aspx<br /><!-- m --><a class="postlink" href="https://msdn.microsoft.com/en-us/library/system.runtime.serialization.formatters.binary.binaryformatter(v=vs.110" >https://msdn.microsoft.com/en-us/librar ... r(v=vs.110</a><!-- m -->).aspx<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 24 cze 2015, o 15:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[komandos332]]></name></author>
<updated>2015-06-24T15:16:09+01:00</updated>
<published>2015-06-24T15:16:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132735#p132735</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132735#p132735"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132735#p132735"><![CDATA[
Pytanie.<br /><br />Czy ktoś wie, jak zserialozować BinaryFormatter'em kontrolki, które nie są oznaczone jako [Serializable]?<br />Próbowałem utworzyć nową klasę np SerializabliePictureBox, która dziedziczy z PictureBox i ustawić ją<br />jako [Serializable] - niestety bez rezultatów. Czy jest możliwość zapisania kontrolek w inny sposób?<br />Np w XML? Spotkał się już ktoś z takim zagadnieniem? ^^<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4299">komandos332</a> — 24 cze 2015, o 15:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[komandos332]]></name></author>
<updated>2015-06-23T05:39:42+01:00</updated>
<published>2015-06-23T05:39:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132567#p132567</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132567#p132567"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132567#p132567"><![CDATA[
<div class="quotetitle">j23 napisał(a):</div><div class="quotecontent"><br />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<br /></div><br /><br />To wszystko już działa. Ctrl + E - przejście do trybu edycji.<br /><br />Ctrl + zaznaczenie obszaru - zaznacza obiekty znajdujące się w obszarze.<br />Ctrl + Pojedyncze kliknięcia na każdy obiekt osobno dodaje obiekt do puli zaznaczonych.<br /><br />Ogólnie Ctrl służy do przenoszenia. Klikając na jakiś obiekt pojedynczy można go przenieść, ale chcąc przenieść większą<br />grupę obiektów trzeba robić to z Ctra + A lub Ctrl i MultiselectRectangle lub też Ctrl + wybranie obiektów<br />przez kliknięcia.<br /><br />Jeśli chodzi o klonowanie - Znalazłem ciekawą metodę MemberwiseClone() - zwraca obiekt. Każdy z moich obiektów jest zaopatrzony we właściwość<br />isSelected. Przy zdarzeniu Ctrl + C przelecę wszystkie obiekty i jeżeli isSelected jest prawdziwe - tworzę klona do jakiegoś stocka.<br />Przy zdarzeniu PreviewKeyPress jeżeli wciśnięte będzie Ctrl + V, wale obiekty na ekran <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br />Nie mam jeszcze pomysłu na to jak zrobić Ctrl + Z. Ale spokojnie, jestem uparty i się nie poddam ^^<br /><br />@edit<br />Klonowanie okazało się pestką. Teraz czas na Ctrl + Z <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4299">komandos332</a> — 23 cze 2015, o 05:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[j23]]></name></author>
<updated>2015-06-23T00:21:03+01:00</updated>
<published>2015-06-23T00:21:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132563#p132563</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132563#p132563"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132563#p132563"><![CDATA[
<div class="quotetitle">komandos332 napisał(a):</div><div class="quotecontent"><br />j23 - Właśnie chodzi o to, że chciałbym kopiować obiekty różnych klas w jednym czasie, jak na CAD'a przystało ^^<br />(...)<br /></div>Pytanie tylko ile zakładasz, że będzie &quot;wartstw&quot; 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ć. <br />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 <span style="text-decoration: underline">prostym</span> programie CAD nie ma zbyt wielu warstw, więc nie ma potrzeby rezerwowania na zmienną zbyt wiele pamięci.<br />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.<br />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 &quot;zaznaczanie&quot;. 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).<br /><br />Nie znam się zbyt dobrze na C#, ale być może SunRiver'owi chodziło o coś w tym rodzaju:<br /><a href="http://zetcode.com/gui/csharpwinforms/dragdrop/"  class="postlink">http://zetcode.com/gui/csharpwinforms/dragdrop/</a><br /><br />Ambitny program.. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Nie ma co.. Trzymam kciuki!<br /><br />Pozdrawiam! j23<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4504">j23</a> — 23 cze 2015, o 00:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[komandos332]]></name></author>
<updated>2015-06-22T21:19:36+01:00</updated>
<published>2015-06-22T21:19:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132544#p132544</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132544#p132544"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132544#p132544"><![CDATA[
Dzięki za odpowiedzi <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> Bardzo mi miło, że ktoś zwrócił uwagę na to moje coś <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />j23 - Właśnie chodzi o to, że chciałbym kopiować obiekty różnych klas w jednym czasie, jak na CAD'a przystało ^^<br />SunRiver - jeszcze nie wiem o jakie libsiki Ci chodzi, ale poszukam <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br /><br />Pozdrawiam, Maciek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4299">komandos332</a> — 22 cze 2015, o 21:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2015-06-22T20:49:54+01:00</updated>
<published>2015-06-22T20:49:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132542#p132542</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132542#p132542"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132542#p132542"><![CDATA[
hmm.... nio ma to już jakiś głębszy sens i jakiś styl ,... zaczyna się wyłaniać ... <br />niemniej na tym etapie program strasznie męczy ....<br />co do skrótów ... trzymaj się standardu i użyj poprostu dostępnych w libsach od gui  clas <br /><img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 22 cze 2015, o 20:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[j23]]></name></author>
<updated>2015-06-22T20:44:28+01:00</updated>
<published>2015-06-22T20:44:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132540#p132540</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132540#p132540"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132540#p132540"><![CDATA[
Coraz ciekawiej się robi... <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> -i bardzo dobrze. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />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.<br />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 &quot;przykrycie&quot; 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.<br /><br />Pozdrawiam! j23 Jarek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4504">j23</a> — 22 cze 2015, o 20:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[komandos332]]></name></author>
<updated>2015-06-22T16:55:58+01:00</updated>
<published>2015-06-22T16:55:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132511#p132511</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132511#p132511"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=132511#p132511"><![CDATA[
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 <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Ctrl + E - tryb edycji<br />Ctrl + D - tryb rysowania<br />Ctrl + A - zaznacz wszystko<br />Del - Usuń<br />W trybie edycji jest dostępny multiselect przez przeciąganie myszy.<br /><br />Narazie stworzyłem tylko trzy obiekty:<br /><br /> - 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<br />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<br />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<br /> - ConnectionPoint - Nie ma on żadnych właściwości, tworzy się po połączeniu dwóch linii.<br /> - GraphicGrid - Po prostu siatka.<br /><br />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.<br />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<br /><br />Z czym się aktualnie zmagam?<br /><br />Działanie skrótów klawiszowych:<br /><br />Ctrl + C<br />Ctrl + V<br />Ctrl + Z<br /><br />Co potem? Stworzę trzy kolejne podstawowe klasy:<br /><br />Master - Cewka przekaźnika, stycznika itp.<br />Slave - Styki przekaźników. Będę musiał stworzyć między nimi powiązania przez adresy krosowe - mam koncept plan.<br />Kanały PLC - interpretacja przez program wejść i wyjść sterowników PLC stosowanych w przemyśle.<br /><br />Co o tym myślicie?<br /><br />Chyba jestem dziwny, przy pisaniu tego posta nacisnąłem Ctrl + Shift + S chyba z 10 razy...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4299">komandos332</a> — 22 cze 2015, o 16:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2015-06-14T21:35:53+01:00</updated>
<published>2015-06-14T21:35:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131777#p131777</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131777#p131777"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131777#p131777"><![CDATA[
to się pisze nie szuka <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />a libsik.. do zapisu tylko własnego formatu plików <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />nic wielkiego w tym niema używam przede wszystkim System.Drawing.Drawing2D<br /><br />zresztą tak wygląda DrawLine.cs  <br /><br />[syntax=csharp]using System;<br />using System.Windows.Forms;<br />using System.Drawing;<br />using System.Diagnostics;<br />using System.Globalization;<br />using System.Drawing.Drawing2D;<br />using System.Runtime.Serialization;<br /><br />namespace Rysunkowo<br />{<br /><br />public class DrawLine : Rysunkowo.DrawObject<br />{<br />        private Point startPoint;<br />        private Point endPoint;<br />        private const string entryStart = &quot;Start&quot;;<br />        private const string entryEnd = &quot;End&quot;;<br />        private GraphicsPath areaPath = null;<br />        private Pen areaPen = null;<br />        private Region areaRegion = null;<br /><br /><br />    public DrawLine()<br />{<br />            startPoint.X = 0;<br />            startPoint.Y = 0;<br />            endPoint.X = 1;<br />            endPoint.Y = 1;<br /><br />            Initialize();<br />}<br /><br />        public DrawLine(int x1, int y1, int x2, int y2)<br />        {<br />            startPoint.X = x1;<br />            startPoint.Y = y1;<br />            endPoint.X = x2;<br />            endPoint.Y = y2;<br /><br />            Initialize();<br />        }<br /><br /><br />        public override void Draw(Graphics g)<br />        {<br />            g.SmoothingMode = SmoothingMode.AntiAlias;<br /><br />            Pen pen = new Pen(Color, PenWidth);<br /><br />            g.DrawLine(pen, startPoint.X, startPoint.Y, endPoint.X, endPoint.Y);<br /><br />            pen.Dispose();<br />        }<br /><br />        public override int HandleCount<br />        {<br />            get<br />            {<br />                return 2;<br />            }<br />        }<br /><br />        <br />        public override Point GetHandle(int handleNumber)<br />        {<br />            if ( handleNumber == 1 )<br />                return startPoint;<br />            else<br />                return endPoint;<br />        }<br /><br />       <br />        public override int HitTest(Point point)<br />        {<br />            if ( Selected )<br />            {<br />                for ( int i = 1; i &lt;= HandleCount; i++ )<br />                {<br />                    if ( GetHandleRectangle(i).Contains(point) )<br />                        return i;<br />                }<br />            }<br /><br />            if ( PointInObject(point) )<br />                return 0;<br /><br />            return -1;<br />        }<br /><br />        protected override bool PointInObject(Point point)<br />        {<br />            CreateObjects();<br /><br />            return AreaRegion.IsVisible(point);<br />        }<br /><br />        public override bool IntersectsWith(Rectangle rectangle)<br />        {<br />            CreateObjects();<br /><br />            return AreaRegion.IsVisible(rectangle);<br />        }<br /><br />        public override Cursor GetHandleCursor(int handleNumber)<br />        {<br />            switch ( handleNumber )<br />            {<br />                case 1:<br />                case 2:<br />                    return Cursors.SizeAll;<br />                default:<br />                    return Cursors.Default;<br />            }<br />        }<br /><br />        public override void MoveHandleTo(Point point, int handleNumber)<br />        {<br />            if ( handleNumber == 1 )<br />                startPoint = point;<br />            else<br />                endPoint = point;<br /><br />            Invalidate();<br />        }<br /><br />        public override void Move(int deltaX, int deltaY)<br />        {<br />            startPoint.X += deltaX;<br />            startPoint.Y += deltaY;<br /><br />            endPoint.X += deltaX;<br />            endPoint.Y += deltaY;<br /><br />            Invalidate();<br />        }<br /><br />        public override void SaveToStream(System.Runtime.Serialization.SerializationInfo info, int orderNumber)<br />        {<br />            info.AddValue(<br />                String.Format(CultureInfo.InvariantCulture,<br />                &quot;{0}{1}&quot;,<br />                entryStart, orderNumber),<br />                startPoint);<br /><br />            info.AddValue(<br />                String.Format(CultureInfo.InvariantCulture,<br />                &quot;{0}{1}&quot;,<br />                entryEnd, orderNumber),<br />                endPoint);<br /><br />            base.SaveToStream (info, orderNumber);<br />        }<br /><br />        public override void LoadFromStream(SerializationInfo info, int orderNumber)<br />        {<br />            startPoint = (Point)info.GetValue(<br />                String.Format(CultureInfo.InvariantCulture,<br />                &quot;{0}{1}&quot;,<br />                entryStart, orderNumber),<br />                typeof(Point));<br /><br />            endPoint = (Point)info.GetValue(<br />                String.Format(CultureInfo.InvariantCulture,<br />                &quot;{0}{1}&quot;,<br />                entryEnd, orderNumber),<br />                typeof(Point));<br /><br />            base.LoadFromStream (info, orderNumber);<br />        }<br /><br /><br />        protected void Invalidate()<br />        {<br />            if ( AreaPath != null )<br />            {<br />                AreaPath.Dispose();<br />                AreaPath = null;<br />            }<br /><br />            if ( AreaPen != null )<br />            {<br />                AreaPen.Dispose();<br />                AreaPen = null;<br />            }<br /><br />            if ( AreaRegion != null )<br />            {<br />                AreaRegion.Dispose();<br />                AreaRegion = null;<br />            }<br />        }<br /><br />       <br />        protected virtual void CreateObjects()<br />        {<br />            if ( AreaPath != null )<br />                return;<br />            AreaPath = new GraphicsPath();<br />            AreaPen = new Pen(Color.Black, 7);<br />            AreaPath.AddLine(startPoint.X, startPoint.Y, endPoint.X, endPoint.Y);<br />            AreaPath.Widen(AreaPen);<br />            AreaRegion = new Region(AreaPath);<br />        }<br /><br />        protected GraphicsPath AreaPath<br />        {<br />            get<br />            {<br />                return areaPath;<br />            }<br />            set<br />            {<br />                areaPath = value;<br />            }<br />        }<br /><br />        protected Pen AreaPen<br />        {<br />            get<br />            {<br />                return areaPen;<br />            }<br />            set<br />            {<br />                areaPen = value;<br />            }<br />        }<br /><br />        protected Region AreaRegion<br />        {<br />            get<br />            {<br />                return areaRegion;<br />            }<br />            set<br />            {<br />                areaRegion = value;<br />            }<br />        }<br /><br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 14 cze 2015, o 21:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[komandos332]]></name></author>
<updated>2015-06-14T21:21:08+01:00</updated>
<published>2015-06-14T21:21:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131770#p131770</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131770#p131770"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131770#p131770"><![CDATA[
<div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />chodzi ci o coś takiego ??<br /><br />Banalne w sumie  ....<br /></div><br /><br />@SunRiver - Jeżeli Ty to zrobiłeś na kolanie to ja chyba powinienem zrezygnować z programowania...<br />Ile ja się naszukałem takiej biblioteki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4299">komandos332</a> — 14 cze 2015, o 21:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2015-06-14T21:10:12+01:00</updated>
<published>2015-06-14T21:10:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131767#p131767</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131767#p131767"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131767#p131767"><![CDATA[
chodzi ci o coś takiego ??<br /><br />Banalne w sumie  ....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 14 cze 2015, o 21:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[j23]]></name></author>
<updated>2015-06-14T21:06:38+01:00</updated>
<published>2015-06-14T21:06:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131765#p131765</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131765#p131765"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131765#p131765"><![CDATA[
<div class="quotetitle">komandos332 napisał(a):</div><div class="quotecontent"><br />(...)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ść<br />tak na skróty. Muszę napisać taki algorytmik sprawdzający punkty tej linii.(...)<br /></div>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.<br /><br />Pozdrawiam! j23<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4504">j23</a> — 14 cze 2015, o 21:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[komandos332]]></name></author>
<updated>2015-06-14T20:06:10+01:00</updated>
<published>2015-06-14T20:06:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131752#p131752</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131752#p131752"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131752#p131752"><![CDATA[
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<br />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<br />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ść<br />tak na skróty. Muszę napisać taki algorytmik sprawdzający punkty tej linii. W przypadku Rectangle wygląda to pewnie tak:<br /><br />[syntax=csharp]private bool Contains(Point p)<br />{<br />    if(p.X &gt; rect.X &amp;&amp; p.X &lt; rect.X + rect.Width &amp;&amp; p.Y &gt; rect.Y &amp;&amp; p.Y &lt; rect.Y + rect.Height)<br />        return true;<br />    else return false;<br />}[/syntax]<br /><br />Proste, ale w przypadku linii? Musiał bym się dostać do środka klasy Graphics i jej metody DrawLine i sprawdzić na jakiej podstawie ona<br />rysuje tę linię, zgadza się? Jeżeli mój mózg gdzieś popełnił gafę to proszę o poprawkę ^^<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4299">komandos332</a> — 14 cze 2015, o 20:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[j23]]></name></author>
<updated>2015-06-14T19:15:51+01:00</updated>
<published>2015-06-14T19:15:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131747#p131747</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131747#p131747"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131747#p131747"><![CDATA[
<div class="quotetitle">komandos332 napisał(a):</div><div class="quotecontent"><br />@j23 Twoja odpowiedź mnie bardzo zmotywowała. Wydaje mi się że znalazłem coś interesującego - zabieram się do kodzenia.<br />Po uzyskaniu konkretnych rezultatów od razu się podzielę ^^<br /></div><br />Jeżeli mogę coś jeszcze doradzić dla uproszczenia sprawy... <br />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ą. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />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... <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ..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. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Inaczej zakopiesz się w kodzie...<br /><br />Pozdrawiam! j23 Jarek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4504">j23</a> — 14 cze 2015, o 19:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[komandos332]]></name></author>
<updated>2015-06-14T18:25:17+01:00</updated>
<published>2015-06-14T18:25:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131744#p131744</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131744#p131744"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131744#p131744"><![CDATA[
@j23 Twoja odpowiedź mnie bardzo zmotywowała. Wydaje mi się że znalazłem coś interesującego - zabieram się do kodzenia.<br />Po uzyskaniu konkretnych rezultatów od razu się podzielę ^^<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4299">komandos332</a> — 14 cze 2015, o 18:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2015-06-14T14:46:38+01:00</updated>
<published>2015-06-14T14:46:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131734#p131734</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131734#p131734"/>
<title type="html"><![CDATA[Re: C# Windows Forms - Prosty paint - Wstęp do stworzenia CA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12008&amp;p=131734#p131734"><![CDATA[
TYM razem PRZENOSZĘ  ... ale najpierw należy przeczytać zasady działu...<br />A nie wrzucać co się chce gdzie się chce<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 14 cze 2015, o 14:46</p><hr />
]]></content>
</entry>
</feed>