Наконец-то у меня программистский пост ))
Итак передо мной встала задача сделать себе достаточно сложный виндовый инструментарий. Этакую мини IDE для упрощения и ускорения разработки игр. Гугление показало, что самое популярное решение для таких задач это C#
Сначала я долго не мог к нему подступиться.
Visual Studio отпугивал меня своим размером. Я скачал гораздо менее масштабную SharpDevelop и ничего не понял.
Тогда я скачал новую делфи (Седьмая например не поддерживает png из коробки. Да и просто как-то не хочется отставать от прогресса)…. Внезапно она оказалась гораздо более похожей на SharpDevelop чем на Delphi7.
В новой делфи список элементов справа, свойства слева, в SharpDevelop наоборот.
А если не видно разницы, зачем использовать «begin end;» вместо скобок?
Я так же подумал. Вообще делфишный синтаксис была моя единственная претензия к Delphi.
(Была у меня как-то задача написать маааленькую виндовую програмку уже после того как я наловчился работать с AS3 (Синтаксис похож на JS), так вот работать в делфи было неудобно и неприятно) поэтому я наконец установил Visual Studio.
(Для полноты рассказа, добавлю: был еще вариант писать на том же AS3, в котором по факту я сейчас имею больше всего опыта. Но справедливо рассудил, что язык и среда заточенные под винду, будут удобней для чисто виндового софта. Да и не хотелось лишаться повода расширить свои проф навыки)
Эти метания заняли дохрена времени. Дохренища. Поэтому, если ты, читатель, стоишь на распутье и тоже думаешь как бы подступиться к виндовому программированию, сразу ставь бесплатную версию VS не парь себе мозг. Да есть минусы. Но запаренный мозг того не стоит.
(И хотя тот же SharpDevelop сейчас меня уже не напугает, я не жалею что поставил VS. Жалею только, что тупил долго.)
Итак, наконец, началось мое знакомство с C#
И тут же новая засада. Есть два фремворка над C#, чтобы писать виндовый софт. Один из них называется Windows Forms, другой WPF. Да я убил еще Х дней пытаясь понять какой из них выбрать, в итоге почему-то выбрал Windows Forms.
И дело пошло. И пошло довольно быстро. Я был доволен Студией, Шарпом, и конечно же собой уже на следующий день. Да я гуглил каждую мелочь, но все это было очень легко и даже такие сложные задачи, как перетаскивание элемента мышкой по форме, перетаскивание картинки на форму в работающем приложении, масштабирование картинки мышкой (в работающем приложении). Все эти задачи решались гораздо быстрее, чем могло бы показаться.
Были конечно минусы. Например студия не может Ctrl+D (дублировать строку), к чему я очень привык, пока писал код играм в FlashDevelop. К счастью нашлась комбинация Ctrl+C+V, которая если ничего не выделять копирует всю строку. (Да перезаписывает буфер обмена, но что поделать). SharpDevelop к слову работает так же. Delphi же не может ни так, ни так.
Но плюсов больше. Я спокойно создавал новые классы, расширял компоненты, как-то у меня сразу легко пошло с генерируемыми объектами и програмным приписыванием им нужных обработчиков событий.
Собственно я сделал приличный кусок своей софтинки работая неделю по 0,5-2 часа в день. (картинки я накидал мышкой в рабочую область в уже работающем приложении)
Но как можно догадаться из заголовка, «что-то пошло не так». Посмотрите на картинки в центре рабочей зоны. Они не поддерживают прозрачность.
2016 год. Самая популярная среда программирования. Самый популярный десктопный язык. А прозрачность не поддерживается. У картинки есть возможность быть прозрачной относительно своего родителя и все. Но этого не достаточно для нормальной работы, как минимум потому, что родитель «обрезает» ребенка по своим границам (иначе бы я сделал просто «матрешку» из картинок).
Ну что ж. Спасибо Windows Forms, ты меня познакомила с C#, теперь я пойду к WPF.
WPF
первое впечатление: шок и ужас.
Если WF была понятна для любого, кто провел достаточно времени с формами делфей, то WPF, хоть и выглядит как-то похоже, но имеет под капотом принципиально другую логику.
WPF лишь делает вид, что с ним можно работать мышкой. Лучше сразу расставайтесь с этой иллюзией. WPF это разметка. Буквально.
Я так и не смог сделать вот этой простой вещи мышкой (В Windows Forms, я сделал мышкой весь интерфейс). Код, который как бы «автогенерируется» при добавлении элементов на форму на самом деле ручной целиком. (не считая начальной области, не имеющей отношения к происходящему на экране)
Возможно если у вас богатый опыт верстки HTML, вам этот подход очень понравится, но я был в шоке… Первые два часа. А потом втянулся… и в общем-то если перестроить мозги, то это даже будет нравиться.
Пока рано о чем-то говорить детально. На WPF я пересел только сегодня. Сначала надо посмотреть, как пойдут задачи, которые я уже сделал в WF, и по итогам судить.
P.S Хоть пост и подразумевает обсуждение, но так же предполагается, что он будет полезен новичкам. Что я могу посоветовать.
1) Если вы ничего не умеете вообще, то слепите что-нибудь простое на html+php, это даст самый начальный опыт для начала знакомства с WPF
2) Если вы никогда не делали и не планируете делать сайты, да и приложения, требующие взаимопрозрачность картинок вас не интересуют, то можно брать WF. Но вообще-то WF морально устаревший, как я понял.
3) Если у вас хороший опыт работы с сайтами, то WPF без вариантов.
4) Если вы 50-летний махровый делфист и вам тяжело дается новое, но потянуло на сишную сторону, то WF, конечно.
5) Если вы не знакомы с сишным синтакисом и именно он вас пугает, то бросайте эту чушь. Знакомьтесь. Сишный синтаксис уже захватил мир и это никуда не уйдет. А дальше см п.1-4.
P.S.S Си шарп позволяет писать на русском. Ужас.
PictureBox Леваяминиатюрка = new PictureBox();
Леваяминиатюрка.Image = image;
Леваяминиатюрка.SizeMode = PictureBoxSizeMode.StretchImage;
Леваяминиатюрка.Width = 50;
Леваяминиатюрка.Height = 50;
flowLayoutPanel1.Controls.Add(Леваяминиатюрка);
Автор:
Elsper.ru VN:F [1.9.14_1148]
Rating: 3.9/10 (7 votes cast)