{"id":776,"date":"2010-07-25T19:38:36","date_gmt":"2010-07-25T18:38:36","guid":{"rendered":"http:\/\/morony.pl\/?p=776"},"modified":"2010-07-25T19:38:36","modified_gmt":"2010-07-25T18:38:36","slug":"zrzut-ekranu-strony-www-o-dowolnym-rozmiarze-c","status":"publish","type":"post","link":"https:\/\/morony.pl\/?p=776","title":{"rendered":"Zrzut (ekranu) strony www o dowolnym rozmiarze (C#)"},"content":{"rendered":"<p>Ma\u0142y i prosty kawa\u0142ek przydatnego kodu w C# .net &#8211; mo\u017ce komu\u015b si\u0119 przyda. Za pomoc\u0105 opisanego poni\u017cej programu mo\u017cna zapisa\u0107 zrzut dowolnej strony internetowej do pliku graficznego. Nie by\u0142oby w tym nic nadzwyczajnego gdyby nie fakt, \u017ce program potrafi wygenerowa\u0107 zrzut o rozmiarze wi\u0119kszym ni\u017c ekran &#8211; bez sztucznego przewijania strony. <\/p>\n<p>Przyk\u0142adowy zrzut tego bloga o rozmiarze 800 na 19560 pikseli mo\u017cna zobaczy\u0107 w pomniejszeniu (orygina\u0142 ma ponad 5 mega) <a href=\"http:\/\/morony.pl\/wp-content\/uploads\/2010\/07\/morony.pl_.png\">tutaj<\/a>.<\/p>\n<p><strong>Jak to dzia\u0142a?<\/strong> Kontrolka przegl\u0105darki (czyli nasze &#8220;okno&#8221;) tworzona jest w tle, dzi\u0119ki czemu mo\u017ce mie\u0107 dowolny rozmiar, wykraczaj\u0105cy poza granice ekranu.<\/p>\n<p><strong>Jak wygl\u0105da aplikacja?<\/strong> Moja wygl\u0105da bardzo prosto, poniewa\u017c zawiera wy\u0142\u0105cznie minimum funkcji i mo\u017cliwo\u015bci. Pozwala na wybranie adresu strony, nazwy pliku do kt\u00f3rego zapisujemy zrzut i rozmiaru zrzutu. <\/p>\n<p><center><a href=\"http:\/\/morony.pl\/wp-content\/uploads\/2010\/07\/2010-07-25_200351.png\"><img loading=\"lazy\" decoding=\"async\" width=\"473\" height=\"214\" src=\"http:\/\/morony.pl\/wp-content\/uploads\/2010\/07\/2010-07-25_200351.png\" alt=\"\" title=\"URL to PNG (URL2PNG)\" class=\"alignnone size-medium wp-image-780\" srcset=\"https:\/\/morony.pl\/wp-content\/uploads\/2010\/07\/2010-07-25_200351.png 473w, https:\/\/morony.pl\/wp-content\/uploads\/2010\/07\/2010-07-25_200351-300x135.png 300w\" sizes=\"(max-width: 473px) 100vw, 473px\" \/><\/a><\/center><\/p>\n<p>Przy tworzeniu programu potrzebujemy kontrolki webBrowser, kt\u00f3r\u0105 nale\u017cy umie\u015bci\u0107 na formie, ale poza widocznym obszarem. Dodatkowo wykorzysta\u0142em 3 pola tekstowe i guzik.<\/p>\n<p><strong>Kod programu<\/strong> z drobnym komentarzem jest nast\u0119puj\u0105cy. <\/p>\n<pre class=\"prettyprint\">\/\/ Przepisujemy warto\u015bci z GUI do zmiennych:   \r\n\tint width = Int32.Parse(textBox2.Text);\r\n\tint height = Int32.Parse(textBox3.Text);\r\n\tstring url = textBox1.Text;\r\n\tstring file = textBox4.Text;\r\n\r\n\/\/ Konfigurujemy kontrolk\u0119 webBrowser\r\n\twebBrowser1.ScrollBarsEnabled = false;\r\n\twebBrowser1.Width = width;\r\n\twebBrowser1.Height = height;\r\n\r\n\/\/ Rozpoczynamy pobieranie strony (URL):\r\n\twebBrowser1.Navigate(url);\r\n\r\n\/\/ Czekamy, a\u017c pobieranie si\u0119 zako\u0144czy:\r\n\twhile (webBrowser1.ReadyState != WebBrowserReadyState.Complete)\r\n\t{\r\n\t\tApplication.DoEvents();\r\n\t}\r\n\r\n\/\/ Tworzymy zmienn\u0105 na zrzut o odpowiednim rozmiarze:\r\n\tBitmap bitmap = new Bitmap(width, height);\r\n\tRectangle bitmapRect = new Rectangle(0, 0, width, height);\r\n\r\n\/\/ Zapisujemy zrzut strony do utworzonej zmiennej\r\n\twebBrowser1.DrawToBitmap(bitmap, bitmapRect);\r\n\r\n\/\/ Konwertujemy zminn\u0105 bitmapow\u0105 do obrazka i zapisujemy w formacie PNG\r\n\tSystem.Drawing.Image origImage = bitmap;\r\n\torigImage.Save(file, ImageFormat.Png);;<\/pre>\n<p>Mo\u017ce si\u0119 kiedy\u015b komu\u015b przyda. Zak\u0142adam, \u017ce mi si\u0119 kiedy\u015b przyda, wi\u0119c napisa\u0142em ten wpis, \u017ceby mi si\u0119 rozwi\u0105zanie nie zgubi\u0142o. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ma\u0142y i prosty kawa\u0142ek przydatnego kodu w C# .net &#8211; mo\u017ce komu\u015b si\u0119 przyda. Za pomoc\u0105 opisanego poni\u017cej programu mo\u017cna zapisa\u0107 zrzut dowolnej strony internetowej do pliku graficznego. Nie by\u0142oby w tym nic nadzwyczajnego gdyby nie fakt, \u017ce program potrafi wygenerowa\u0107 zrzut o rozmiarze wi\u0119kszym ni\u017c ekran &#8211; bez sztucznego przewijania strony. Przyk\u0142adowy zrzut tego [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,1],"tags":[],"_links":{"self":[{"href":"https:\/\/morony.pl\/index.php?rest_route=\/wp\/v2\/posts\/776"}],"collection":[{"href":"https:\/\/morony.pl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/morony.pl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/morony.pl\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/morony.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=776"}],"version-history":[{"count":11,"href":"https:\/\/morony.pl\/index.php?rest_route=\/wp\/v2\/posts\/776\/revisions"}],"predecessor-version":[{"id":789,"href":"https:\/\/morony.pl\/index.php?rest_route=\/wp\/v2\/posts\/776\/revisions\/789"}],"wp:attachment":[{"href":"https:\/\/morony.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=776"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/morony.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=776"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/morony.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=776"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}