Недавно наткнулась на свою программку, которая создает окно произвольной формы. Написана она была на C#, код довольно простой. Логически код можно разделить на две части - одна отрисовывает форму произвольной формы, заданной bmp-файлом, другая занимается отслеживанием перемещений формы. На самой форме нет ничего, FormBorderStyle установлен в None.
Принцип работы этого кода прост. Методу CreateFromBMP() в качестве аргументов передается bmp-русинок, в котором содержится желаемая форма для окна, и цвет, который надо из рисунка исключить, чтобы получить контур. Для примера использовался рисунок машинки, созданный в mspaint :)
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.BackgroundImage = global::Window.Properties.Resources.bg;
this.Region = CreateFromBMP(global::Window.Properties.Resources.bg, Color.FromArgb(255, 255, 255));
}
#region Create Form Border From BMP
Region CreateFromBMP(Bitmap bg, Color excludeColor)
{
GraphicsPath path = new GraphicsPath();
int width = bg.Width;
int height = bg.Height;
for (int x = 0; x < width; x++)
{
for (int y = 0; y < height; y++)
{
if (bg.GetPixel(x, y) != excludeColor)
{
path.AddRectangle(new Rectangle(x, y, 1, 1));
}
}
}
return (new Region(path));
}
#endregion
#region Moving form
private bool toMove = false;
private Point delta = new Point();
private void start_MouseMove(object sender, MouseEventArgs e)
{
if (toMove)
{
Point coords = this.PointToScreen(e.Location);
Point location = new Point(this.Location.X + (coords.X - delta.X), this.Location.Y + (coords.Y - delta.Y));
this.Location = location;
delta = coords;
}
}
private void start_MouseDown(object sender, MouseEventArgs e)
{
if ((e.Button == MouseButtons.Left) && (e.Clicks == 1))
{
toMove = true;
delta = this.PointToScreen(e.Location);
}
}
private void start_MouseUp(object sender, MouseEventArgs e)
{
toMove = false;
}
#endregion
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape) Application.Exit();
}
}
Результат работы кода:
Скачать проект можно отсюда.
Окна произвольной формы на C#
Постеры пространств имён
Постер пространства имен .NET 3.5 скачать pdf
Постер пространства имен .NET 4.0 скачать pdf
Постер LinQtoSQL скачать pdf
Microsoft Enterprise Library
Microsoft Enterprise Library – это набор блоков приложений многоразового использования, созданных как решения проблем, с которыми специалисты по разработке программного обеспечения обычно сталкиваются при создании корпоративных приложений. Для использования библиотеки необходим .NET 3.5. Живет проект по адресу http://www.codeplex.com/entlib. Скачать Microsoft Enterprise Library 4.1 можно отсюда http://www.microsoft.com/downloads/details.aspx?FamilyId=1643758B-2986-47F7-B529-3E41584B6CE5&displaylang=en либо по предыдущей ссылке.
В Enterprise Library входят следующие блоки:
- блок кэширования (Caching Application Block), который применяется для реализации локального кэша;
- блок криптографии (Cryptography Application Block), служащий для исполнения алгоритмов хеширования и симметрического шифрования;
- блок доступа к данным (Data Access Application Block). Он используется для реализации функциональности, связанной с доступом к базам данных;
- блок обработки исключений (Exception Handling Application Block). Применяется для реализации унифицированной обработки исключений на всех уровнях приложения;
- блок протоколирования (Logging Application Block). Служит для исполнения механизмов ведения протоколов;
- блок безопасности (Security Application Block). Реализует механизмы авторизации и безопасного кэширования.
Посмореть презентацию об Enterprise Library вы можете по ссылке http://pnp.in.ua/video/EntLib/default.html, а по этой ссылке http://pnp.in.ua/Slides/EntLib/default.html находятся слайды из это презентации.
Набор системных диалогов для .Net

Оказывается, существует такая полезная библиотека для .NET 3.5 SP1 Ookii.Dialogs, которая содержит разные системные диалоги (Task dialog, Progress dialog, Credential dialog, Input dialog, Vista-style common file dialogs и др.). В библиотеке представлены две версии диалогов - для WinForms и для WPF. Однако при использовании этой библиотеки нужно учитывать, что большинство диалогов появилось только начиная с Vista. Поэтому для ОС версией меньше Vista, нужно писать обертку для отображения системных диалогов.
Скачать библиотеку можно по ссылке http://www.ookii.org/download.ashx?id=Dialogs. В архиве есть исходный код библиотеки, а так же полная документация.
Горячие клавиши (Hotkeys) Windows 7
Список хоткеев в Window 7. Естественно, часть хоткеев не будет для вас новой, потому как унаследована от Windows XP. Сразу оговорюсь, список не претендует на полноту.
Управление окнами
Win+Home: Свернуть/развернуть все окна, кроме активного. («Потрясти» окно)
Win+Space: Сделать все окна прозрачными. (Задержать курсор над небольшой кнопкой в правом нижнем углу экрана.)
Win+Up: Развернуть активное окно на весь экран. (Перетащить окно вверх до упора, или дважды кликнуть по верхней рамке)
Win+Down: Свернуть активное окно или восстановить размер, если оно развёрнуто на весь экран
Shift+Win+Up: Развернуть окно по высоте (Перетащить нижнюю границу окна до таскбара)
Win+Left/Right: Занять окном левую/правую половину монитора, или восстановить размер (Перетащить окно влево/вправо до упора)
Таскбар
Win+цифра: Запустить программу под этим номером или переключиться на неё
Shift+Win+цифра: Запустить новую копию программы под этим номером (кликнуть колёсиком по иконке)
Ctrl+Win+цифра: Переключиться на следующее окно программы под этим номером (кликнуть, зажав Ctrl)
Alt+Win+цифра: Открыть джамплист программы под этим номером
Win+Tab(+Shift): Переключаться между всеми открытыми окнами с превьюшками над таскбаром в прямом (обратном) порядке
Win+B: Фокус на трэй
Ctrl+Shift+Click: Запустить программу от имени Администратора
Shift+Right-Сlick: Показать меню окна / группы
Проводник и Десктоп
Win+E: Вызвать окно проводника
Win+D: Показать Рабочий стол
Win+F: Поиск
Ctrl + Win + F: Поиск компьютеров
Ctrl+Shift+N: Создать новую папку
Alt+Up: Подняться на уровень выше по папкам
Backspace: Вернуться на предыдущий уровень по папкам
Alt+P: Включить панель просмотра файлов
Shift+Right-Click (по файлу): Добавляет в контекстное меню пункт «Скопировать путь» и много дополнительных пунктов в подменю «Отправить»
Shift+Right-Click (по папке): Добавляет в контекстное меню пункт, позволяющий открыть командную строку из этой папки
Ctrl + Scroll: уменьшение/увеличение размеров иконок
Ctrl+C: Копировать объект (папку, файл, фрагмент текста....)
Ctrl+Х: Вырезать объект (папку, файл, фрагмент текста....)
Ctrl+V: Вставить объект (папку, файл....)
Разное
Win+P: Открыть меню настройки режима презентации (второй монитор — проектор)
Win+(+/-): увеличить / уменьшить изображение (вызывает экранную лупу)
Win+G: Переключаться между запущенными гаджетами
Ctrl+Shift+Esc: диспетчер задач
Win+Pause: Панель управления\Все элементы панели управления\Система (Свойства системы)
Win, "Первые буквы названия программы", Enter: поиск программы по первым буквам ее названия, запуск. Раньше для этого надо было устанавливать сторонний софт типа Launchy, а теперь все влючено!
Win+R: Диалог "Выполнить"
Библиотека
С. Макконнелл. Совершенный код (скачать)
Более 10 лет первое издание этой книги считалось одним из лучших практических руководств по программированию. Сейчас эта книга полностью обновлена с учетом современных тенденций и технологий и дополнена сотнями новых примеров, иллюстрирующих искусство и науку программирования. Опираясь на академические исследования, с одной стороны, и практический опыт коммерческих разработок ПО - с другой, автор синтезировал из самых эффективных методик и наиболее эффективных принципов ясное прагматичное руководство. Каков бы ни был ваш профессиональный уровень, с какими бы средствами разработками вы ни работали, какова бы ни была сложность вашего проекта, в этой книге вы найдете нужную информацию, она заставит вас размышлять и поможет создать совершенный код.
Майкл Ховард, Дэвид Леблан. Защищенный код. (скачать)
В этой книге разработчики найдут советы и рекомендации по защите создаваемых приложений на всех этапах процесса создания ПО — от проектирования безопасных приложений до написания надежного кода, способного устоять перед атакам хакеров. Здесь рассказывается о моделировании угроз, планировании процесса разработки защищенных приложений, проблемах локализации и связанных с ней опасностях, недостатках файловых систем, поддержке секретности в приложениях и анализе исходного кода на предмет безопасности. Авторы иллюстрируют свой рассказ примерами программ на самых разных языках — от C# до Perl. Издание обогащено знанием, полученным авторами в процессе реализации Windows Security Push — инициативы по укреплению защиты продуктов Microsoft. Интересно, что эту книгу Билл Гейтс объявил 'обязательным чтением в Microsoft'.
Ярлыки
Копирайты
Блог о жизни вне кода
Постоянные читатели
Популярно
-
Продолжаю серию постов о своём первом андроид-приложении. Сегодня мысли о публикации приложения в разных маркетах.
-
Продолжаю серию заметок о разработке первого android-приложения. На этот раз речь о выборе стратегии монетизации приложения.
-
Два месяца прошло с момента публикации моего первого Android приложения на Play market, я перебралась на Самуи , а гугл по-тихоньку начал...
-
Продолжаю тему полевых заметок, начатую в предыдущем посте . В этот раз немного об инструментах и чуть-чуть о социальщине.
-
Разделяй и влавствуй - подход на все времена. Концепция модульного программирования не нова, и хорошо себя зарекомендовала. В мире разрабо...
-
Небольшая сравнительная характеристика двух embedded-бд. + SQLite мальнкий размер БД (пустая база весит несколько килобайт против нескольких...
-
Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. Приемы объектно-ориентированного проектирования. ( скачать ) В предлагаемой книге описываютс...
-
Понравился анекдот о колбасе и яйцах :) Жена посылает мужа-программиста в магазин: - Дорогой, купи, пожалуйста, палку колбасы, и если б...
-
Подключить jQuery UI Autocomplete к сайту на Bootstrap довольно просто, единственное - нужно немного допилить стили. Всем страждущим в пом...
-
Microsoft Enterprise Library – это набор блоков приложений многоразового использования, созданных как решения проблем, с...