Существует множество различных типов приложений, где используется резиновая прямоугольная рамка для выделения, которая рисуется, пока мы тянем мышкой, удерживая нажатой клавишу. Такое часто можно увидеть в графических приложениях, при выделении областей, при рисовании прямоугольников/кругов или других фигур, а так же при перемещении каких-то объектов или изменении их размеров. Как можно реализовать это в своих приложениях? В этой статье я покажу современный метод.
Для рисования рамки можно использовать старые функции с операциями растеризации, такие как XOR. Растеризация специфична для старого графического интерфейса GDI и отсутствует в новой реализации GDI+. Раньше, мы должны были рисовать прямоугольник, используя включенный режим растеризации ROP2_XORPEN. Чтобы стереть рамку, не нужно перерисовывать всю сцену, достаточно еще раз нарисовать рамку, и она исчезнет.
Когда-то я уже описывал примеры работы с DACL и данная информация попала в книгу Delphi глазами хакера 2-е издание и появиться во втором издании C++ глазами хакера, которая сейчас находиться на этапе редактирования. Сегодня я нашел интересный пример, простой, но очень интересный, в котором с помощью таблицы DACL вы можете управлять процессом, например, запретить закрытие программы. Не нужно ничего придумывать и реализовывать собственные системы защиты, когда можно использовать DACL.
Данный проект позволяет вам заменить существующую таблицу DACL (Discretionary Access Control List) на собственную. Когда вы сделаете это, вы получите возможность ограничить возможности такие как завершение процесса, получения указателя процесса, чтение памяти, и т.д.
Только что ко мне обратился реактор кодинга в Хакере с просьбой написать что-нибудь по поводу моей позиции в отношении CodeGear. Мы давно уже знакомы с этим редактором и я всегда готов помочь любимому Хакеру. Прежде чем начать писать, я заглянул на сайт компании. О БОЖЕ!!! Подразделение CodeGear уже два месяца как продано компании Embarcadero Technologies, Inc. Его продали за жалкие 23 миллиона баксов. Аршавин стоит дороже!!!
Что же теперь будет? Вопрос серьезный. Я попробую в ближайшее время повыяснять, что нас ожидает, а результат, будет в журнале Хакер. Номер сообщу позднее.
Этот вопрос прост для программиста Delphi, но не очень простой для программиста .NET, которая по своей сути должна быть независима от платформы и не может привязываться к ОС. Но мы та можем напрямую обратиться к системе и вытащить, интересующую нас информацию? Можем!!! И в новой статье Как получить список файлов/папок? я рассказываю, как это сделать на C#
По умолчанию у тебя откроется русский вариант статьи в английском интерфейсе сайта. Ты можешь переключить и интерфейс на русский, в верхнем правом углу.
В Visual Studio не было возможности строить отчеты, а точнее не было хорошего инструмента. Самое удивительное, что на эту нисшу долгое время никто серьезно не претендовал. Если в Delphi с ее маленьким рынком претендентов на стандарт можно не думая назвать два QuickReport и FastReport (не считая более мелких игроков), то здесь только очень дорогой Business Objects.
Я долго думал и решил бросить вызов самому себе - создать простую, но удобную систему отчетности для .NET. Пол года упорного труда и что я вижу? Microsoft внедряет отчетность в VS 2008 Standard. Она была там и раньше, но сторонняя, а тут похоже что своя. А ведь если MS решила создать систему отчетности, стоит ли в это ввязываться скромному программисту Мишке? Глупо и бессмысленно. Не то, что ничего не заработаю, я просто потеряю. Продолжать работать? Зачем, если ее даже смотреть не будут. Что смотреть, если есть готовое. Продвинуть продукт в таких условиях невероятно сложно.
Сегодня я продолжаю разговор о трех нововведениях, которые мне понравились в VS 2008. Не смотря на то, что я пока не рекомендую использовать Linq к базам (не запрещаю, а просто не могу рекомендовать, пока сам не увидел реальную выгоду), для доступа к XML эту выгоду я уже увидел и однозначно рекомендую к использованию.
Просто бомбовая новинка в VS - Linq. Что это такое? Это доступ к данным из кода, т.е. это что-то типа встроенного в .NET языка запросов SQL. Если в твоей голове возник вопрос - а зачем это нужно, то это значит, что ты недавно еще программируешь. Дело в том, что Linq умеет делать запросы не только к базам данных, но и к xml данным и даже к простым массивам. Ну разве не чудо? Представляешь, у тебя есть коллекция данных и ты без проблем пишешь к ней запросы на выборку!
Да что там говорить, вот тебе примерчик:
В Visual Studio 2008 появилось много интересного, в том числе и поддержка .NET 3.5. Сегодня я xотел бы выделить то, что понравилось мне больше всего.
Первое, что хочеться отметить - оператор var. С его помощью можно создавать переменные без явного указания типа данных. Некоторые программисты, услышав такое заявление, думают что Майкрософт добавила дыру, ибо все знают, что все мире должно быть типизировано, иначе неизвестно сколько нужно выделять памяти. Но .NET достаточно умный, чтобы определить ти данных по контексту инициализации.
Я начинаю изменять своему любимому Borland/Inprise/Code gears. Да, я работал с продуктами этой компании на протяжении 15 лет, не обращая внимания на передряги и всякие проблемы внутри компании. Но любовь похоже заканчивается и этому много причин:
1. Первая причина - это моя совесть. Угораздило же меня родиться с этой глупостью в организме. Да, среда разработки от борланда стоит очень дорого, и даже турбо вариант на данный момент мне не по карману. Это единственная программа, за которую готов отдать даже 10 000 р. Если бы они у меня были, но к сожалению...
Компонент PropertyGrid позволяет отображать свойства класса в виде сетки, как это делает окно Properties в самой среде разработки. Чтобы компонент отобразил свойства нужного вам класса, просто присвойте этот класс свойству SelectedObject. Например, следующая строка заставит отобразить свойства кнопки Button1:
propertyGrid.SelectedObject = Button1;
Давайте представим, что нам нужно использовать PropertyGrid для отображения нужного нам набора значений. Как это сделать? Да очень просто – можно все эти свойства объединить в отдельный класс и использовать его, как любой другой стандартный класс из .NET Framework. Только чтобы свойства выглядели красиво, их нужно правильно оформить при описании класса.
Давайте напишем пример, в котором на главном окне будет только компонент PropertyGrid, где должны отображаться свойства программы потенциального приложений. Все свойства будут объединены в отдельном классе PropertiesClass, это очень удобно, красиво и будет соответствовать всем принципам ООП. Давайте рассмотрим, как правильно и красиво оформить класс, возможно, вы узнаете что-то новое из жизни .NET.