Pull to refresh
10
0
Александр @hasalex

User

Send message

Один из способов адаптации настольных приложений под сенсорный экран

Reading time3 min
Views14K
Поработав некоторое время с Windows 8 на планшете и ультрабуке с сенсорным экраном, я столкнулся с одной интересной особенностью. При работе с полями ввода в настольных (desktop) приложениях экранная клавиатура не появляется автоматически, приходится каждый раз вызывать путем касания значка в системном лотке, а потом закрывать нажатием на кнопку закрытия окна.
В Windows UI приложениях такой проблемы нет, клавиатура автоматически появляется, как только поле ввода получает фокус и исчезает, когда в ней отпадает необходимость — например, элемент управления потерял фокус ввода, либо пользователь начал вводить текст с «железной» клавиатуры.
Так как я не только пользователь, но и разработчик, то подумал: а что если перенести это поведение экранной клавиатуры и в свои настольные приложения? Задача поставлена, ищем решение.
Поздравляю хабрачитателей с приближающимися праздниками! Всем, дочитавшим до конца — готовый к использованию код в подарок! :)
Читать дальше →

15000 FPS. Хардкорные трюки ч.2 — ну cовсем нестандартное окно

Reading time6 min
Views27K

Стремимся к «pixel perfect» + прячем окно от RDP!


imageЭто продолжение серии постов с префиксом «15000 FPS», начало тут: часть 1 и часть 1.5. Можно и к этому окну добиться 15К FPS, но разумный подход тут не долбить FPS в цикле Render(), а перерисовывать лишь при необходимости, а большую часть остальной работы за нас винда сама сделает. Глядя на скриншот, первая мысль кодера — «ха, да мы все умеем делать нестандартные окна!».
Но дизайнер поопытнее заподозрит неладное: тень от окна какая-то не виндовая, и вообще тут градиенты и альфа-смешивание, не обошлось без честных 8 бит на альфа-канале. Как?
А нужен только Win32 API + System.Drawing.Bitmap, работать будет даже на Win2K с .Net 2.0 и это окно великолепно и быстро масштабируется и перемещается без глюков.
«Кастомное альфа-смешивание окна на десктоп и не тормозит? Вы шутите?».
Совсем не шучу

Подключение win form в проект xna

Reading time3 min
Views9.7K


Как известно, в xna не предусмотрен типовой GUI, поэтому каждому разработчику приходится решать — рисовать его самим, подключать готовые GUI библиотеки разработанные специально для xna (коих не так уж много), либо пытаться подключить стандартные winform / wpf (по подключению wpf уже есть замечательная статья).
Я не стал разбираться в многочисленных вариантах решения данной задачи и решил пойти как мне казалось наиболее простым путем — подключением winform. Как оказалось, winform имеет ряд нюансов и ограничений.
В итоге после активного поиска я пришел к двум возможным реализациям интерфейса:
1. Весь интерфейс без участия клавиатуры, т.е. кнопки, списки и т.п. Если необходимо ввести что-то с клавиатуры — создавать внешнюю форму и получать с нее данные.
2. Интерфейс полностью работоспособен и можно вводить данные с клавиатуры. Но создание внешних форм невозможно + еще пара нюансов.
Подробнее:
Читать дальше →

Топ-10 результатов в области алгоритмов за 2012 год

Reading time4 min
Views50K
Каждый год 31 декабря David Eppstein публикует обзор препринтов за прошедший год, посвященных структурам данных и алгоритмам, опубликованным на arxiv.org. По ссылкам можно познакомиться с материалами за 2010 и 2011 (мой перевод) годы.

Раздел cs.DS развивается хорошими темпами: в этом году появилось 935 препринтов по алгоритмам и структурам данных, в то время как за 2011 их было 798. Раздел пока не дотягивает до сотни в месяц, хотя в июле (98 препринтов) этот порог был очень близок.

Это мой личный список из десятка препринтов, которые кажутся мне особенно интересными. Как обычно, я не вношу в него мои собственные работы и некоторые другие, о которых я писал раньше. Кроме того, здесь нет результатов (например, более быстрый алгоритм нахождения максимального потока), не появлявшихся на arxiv.org.

Вот они, в хронологическом порядке:
Читать дальше →

WPF, WinForms: 15000 FPS. Хардкорные трюки ч.1.5

Reading time3 min
Views20K
Неожиданное продолжение этого поста (честно не ожидал резонанса), поэтому часть 2 хардкорных трюков, в которой речь пойдет немного о другом, пока подождет.
Итак, в двух словах, что изменилось: добавлен контрол и тестовое приложение для WindowsForms, вариант WPF немного изменился, рефакторинг-причесалинг, добавился threadsafe и контрол теперь может нормально ресайзиться в рантайме (включено в сэмплы, но не советую разворачивать на полный экран — это реально пугает). Спасибо камрадам, указавшим на ошибки и недостатки и теперь теперь проект гордо 0.5 beta. Можно сразу отправиться за обновлением на razorgdipainter.codeplex.com/, кому интересны подробности прошу под кат.
Читать дальше →

WPF, WinForms: рисуем Bitmap c >15000 FPS. Хардкорные трюки ч.1

Reading time4 min
Views43K
Сразу уточнение: Bitmap 200x100 на компе с быстрой памятью и i7 3930K на 1366. Но, это честный System.Drawing.Bitmap.
Вводная: приложение типа осциллографа. Ссылка на готовый проект с фронтэндом в конце статьи.
Как же быстро рисовать его на экран? WriteableBitmap хорош, быстр, и он лучшее решение для WP, WinRT, WPF. Но занудного старпёра-кодера также волнует WinForms, .Net 2.0, Win2K (да-да, в некоторых гос.органах до сих пор теплый ламповый Win2K).
Далее, я обратил внимание на DirectX, тем более у нас для WPF появился полезный контрол D3DImage. Я перепробовал много движков, но ни один из них не давал удобного изящного способа рисовать GDI+ Bitmap из памяти. Некоторые работали и вовсе только с DX10-11. Ближе всех к цели оказался SlimDX. В любом случае, фронтэнд для контрола оказывался некрасивым. Все эти движки… мягко говоря избыточны, для моей простой задачи.
Но решение есть

5 API которые изменят Веб в 2013

Reading time5 min
Views47K
Это невероятно захватывает — наблюдать за эволюцией Веб, и 2013 год принесет нам в запасе очень многое. На подходе ряд технологий, имеющих потенциал в течение 2013 года радикально изменить наши способы использовать и разрабатывать Веб.

Настраиваемые фильтры CSS



СSS фильтры уже имеются в Chrome и Safari, и позволяют расширенные настройки стилей, такие как размытие, искривление и модификацию цветовой интенсивности. Однако, это — только начало. Настраиваемые фильтры CSS позволяют вам описать свои собственные вершинные и пиксельные шейдеры в GLSL, языке, который является неотъемлемой частью традиционного 3D-рендеринга уже в течение 10 лет или около того.

На практике это означает то, что вы можете создавать невероятные эффекты. Комбинируя фильтры с CSS-переходами, вы можете делать красивые трансформации, от завитушек на странице до складывающихся элементов. Пределом является лишь ваше воображение!

Так когда вы можете использовать их? Adobe стал новатором этой технологии и Настраиваемые Фильтры уже доступны в Chrome. Ожидается увидеть их в Chrome в начале следующего года. На данный момент, с ними можно поиграть в Canary.

API автозаполнения



Данное API имеет потенциал радикально изменить регистрации и платежи в сети. Автозаполнение разрабатывается для того, чтобы упростить заполнение форм, и даже сейчас имеется спецификация для подсказок, с каким типом данных связаны поля в форме.
Читать дальше →

Миникомпьютер из роутера с OpenWRT: разрабатываем USB-видеокарту

Reading time25 min
Views187K

Добрый день, уважаемые хабровчане. В этом цикле статей мы с вами пройдем достаточно длинный, но весьма интересный путь по превращению обычного роутера в мини-компьютер с LCD-дисплеем. Для этого мы разработаем сначала USB-видеокарту на базе микроконтроллера STM32F103, потом тестовый драйвер, который позволит нам выводить на него графику, и, наконец – полноценный драйвер фреймбуффера, благодаря которому можно будет запустить настоящие графические приложения, такие как x-сервер. Заодно мы научимся включать наш код в дерево исходников OpenWRT, допиливать его ядро и делать прочие полезные вещи.
Ну а в самом конце мы получим результат, который, я надеюсь, вызовет ностальгическую слезу у многих читателей. Я постараюсь излагать материал таким образом, чтобы в конце каждого этапа мы получали осязаемый результат, не дающий угаснуть энтузиазму. Итак, начнем.
Читать дальше →

Этот безумный, безумный, безумный appStore

Reading time4 min
Views5.2K
В прошлом году Дед Мороз подарил мне подержанный алюминиевый iPhone и новенький MiniMac. Не сразу, ох не сразу я распробовал эти девайсы и окунулся в яблочный мир. Сначала iPhone вытеснил Нокии, Моторолы и Самсунги. Ах ты, Господи, совсем забыл. Все мобильные девайсы у меня валяются на рабочем месте и не были куплены за кровно заработанные деньги.

Через месяц-другой iPhone стал опасно родным, его акселерометр и идеальный тачскрин заставили перенести в него любимые авторские игрушки.

Читать дальше →

Веселые шрифты в своем приложении

Reading time2 min
Views5.1K
Игровые приложения для детей и взрослых скучны без веселых букв и цифр.
Строгий iPhone кодекс не давал разработчику до версии iOS 3.2 стандартных способов использовать свои шрифты в приложениях.
Все спасались нарисованными в редакторе картинками цифр и букв или чужими библиотеками.

image

Как теперь обстоит дело с custom fonts для разработчиков iPhone поделок?
Осторожно! Под хабракатом 1 картинка, 1 анекдот сомнение и 2 фрагмента кода.

Читать дальше →

Давненько не брал я в руки шашки. Знаем, знаем, как Вы играете

Reading time4 min
Views5K
Ситуация в appStore для casual разработчиков быстро меняется.
2 года назад можно было заработать, выпуская платное приложение одновременно с бесплатным аналогом.
После появления в магазине более 100 000 программ этот трюк стал неэффективен.
Год назад шустрые парни стали выкладывать только бесплатные приложения, но с покупками внутри.
Одновременно число программ в appStore перевалило за 500 000.
В ближайшее время ( судя по финансовым отчетам 2012 года) только реклама внутри приложения принесет быстрые деньги.



До прошлого года я использовал фирменную рекламу от Apple.
Однако родная iAd реклама работает исключительно на территории врага.
Чтобы добрать деньги с игроков, живущих не в США (а это минимум 25%), следует прикрутить рекламу от, скажем, Google, которая будет мелькать там, где не работает iAd.

Под habracut я опишу механизм AdWhirl, реализующий показ баннеров от разных производителей.
Пример кода взят из бессмертной игры нашего прекрасного детства.

Читать дальше →

Видеозахват-2

Reading time3 min
Views2.2K
imageНесложно жить в 21 веке. Еще проще получить видео-картинку с любой из камер iPhone внутри своего приложения.
Как это сделать и как это сделал я, было рассказано в статье про фруктожорку.

Воображение не остановилось на достигнутом.
Полученные фотографии можно использовать и в трехмерном мире.
Пример трехмерного объекта с плоской картинкой на боку Вы видите слева от текста.
Если не видите логотипа на изображении вазы, включите режим просмотр картинок в Вашем браузере.

Ниже я приведу пример превращения плоской картинки в GL текстуру и расскажу, как я тайком подглядывал за iOS Review Team.

Напоминаю, что iOS Review Team — это люди, которые проверяют наши приложения для одобрения в appStore.

Подглядывать здесь

OpenGL iBooks-like анимация перелистывания

Reading time6 min
Views9.6K
Помню, когда я в первый раз взял в руки iPad, более всего меня поразило приложение iBooks c его натуралистичным перелистыванием страниц. Все остальные «фишки» как-то не особо впечатляли, но это… это показалось воплощением полной интерактивности. По сравнению с обычными графическими интерфейсами, использующими стандартные элементы GUI, интерфейсы с использованием анимации OpenGL это новый шаг в развитии пользовательских интерфейсов.
Читать дальше →

Impressive Solids: делаем игру на C# под OpenGL, часть II

Reading time15 min
Views16K
Скриншот оформленной игры В первой части разработки тетрисоподобной игры Impressive Solids мы реализовали основную часть геймплея, уделив минимальное внимание внешнему виду приложения. Мы и OpenGL-то почти не использовали, всего и делали, что рисовали цветной прямоугольник. Пришла пора заняться оформлением, а также реализовать подсчёт очков и хранение рекорда (high score). Ну что, поехали дальше.

Picture This


Займёмся текстурами. Нам нужно, во-первых, натянуть что-нибудь на фон окна, а во-вторых, сделать приятно выглядящие блоки (сейчас это просто цветные прямоугольники). Понятное дело, сначала надо изготовить текстуры. В этом нам поможет GIMP. Если у вас нет желания заниматься графикой, можете просто скачать архив с готовыми текстурами и переходить к следующему этапу.

Но сперва отмечу один очень важный нюанс. До версии OpenGL 2.0 каждый из размеров текстуры обязан был быть равным степени двойки (т. е. 64×64, 512×256; это POT-текстуры, от англ. power of two). Если текстуры произвольного размера (NPOT-текстуры) не поддерживаются видеокартой или драйвером видеокарты, такая текстура не будет работать. Это имеет место, например, для встроенных видеокарт Intel под Windows XP.

Чтобы гарантированно обезопасить себя от этой проблемы, самое простое и удобное решение — всегда использовать POT-текстуры. Однако это не всегда возможно, и дальше, когда мы дойдём до вывода текста, нам придётся заняться этим моментом.

Читать дальше →

Просмотр изображений OpenCV во время отладки C++ кода в Visual Studio

Reading time10 min
Views19K


Если вы пишете код для обработки изображений на С++, вы наверняка используете замечательную библиотеку OpenCV. Уверен, вам не раз хотелось посмотреть на изображения в процессе отладки вашего кода. Для этого можно использовать такие удобные функции как imshow или imwrite. Однако это требует модификации исходного кода, а любая современная IDE во время отладки позволяет смотреть значения переменных на лету. Вот было бы здорово так же смотреть изображения?

Если в качестве IDE вы пользуетесь Visual Studio, то знаете, что с .NET в этом плане всё проще. Однако речь идёт про OpenCV, а это только native C++, только хардкор. В этой статье я расскажу, как всё-таки заставить Visual Studio показывать изображения прямо в процессе отладки и дам ссылку на готовое решение. А также коротко расскажу о способах кастомизации Visual Studio.
Читать дальше →

Перевод туториалов по libGDX — часть 2 (рисование изображений)

Reading time7 min
Views33K
Представляю вашему вниманию перевод второго туториала по libGDX. Оригинал находится здесь. Первая часть находится здесь.

Этот туториал дает представление как рисовать изображения используя OpenGL и как libGDX упрощает и оптимизирует этот процесс с помощью класса SpriteBatch.

Рисование изображений.



Изображение, полученное из его оригинального формата (например, PNG) и загруженное в GPU называется текстурой. Текстуры рисуются по некоторой спецификации, которая представляет собой описание геометрической фигуры и каким образом текстура накладывается на вершины этой фигуры. Например, геометрическая фигура может быть прямоугольником и каждый угол прямоугольника относится к соответствующему углу текстуры.
Читать дальше →

Сравнение OpenGL и Direct3D

Reading time6 min
Views122K
Очень часто встречаются различные заблуждения по поводу этих двух API.

Я попытался изложить в этой статье основные факты, которые следует знать как разработчикам, так и конечным пользователям.

Так как тема очень холиварная, я старался придерживаться максимально нейтрального тона.
Читать дальше →

Сервис для создания планировок помещений и интерьеров

Reading time4 min
Views60K


Ровно год назад, мы с партнером, решили стать стартаперами. Точнее, поняли, что теперь мы партнеры-стартаперы. То как поменялась после этого наша жизнь — тема отдельной статьи. Сейчас хотелось бы уделить внимание нашему детищу — сервису планирования помещений и интерьеров.

Итак, пару лет назад, оба фаундера практически одновременно попали в жизненную ситуацию, которая бывает у всех — настало время ремонта.

Что из этого вышло

Information

Rating
Does not participate
Location
Чапаевск, Самарская обл., Россия
Registered
Activity