Небольшое пособие, как с помощью WPF и XAML сделать окно неправильной формы.
С помощью WPF и XAML окну можно придать любую форму. Любое изображение любой формы можно сделать окном программы. Изображение должно иметь формат png, его фон должен быть прозрачным.
Это легко сделать в Photoshop.
1. Взять любое изображение, выделить на нем фрагмент, который будет окном нашей программы.
2. Создать новое изображение, обязательно установить галочку "Прозрачность" (Transparency).
3. Перетащить на новое изображение выделенный фрагмент.
4. Сохранить в формате png
Далее в Visual Studio (2008+) создаем новый WPF проект. XAML-описание главного окна программы должно содержать примерно следующее:
<window title="ShapedWindow" windowstartuplocation="CenterScreen"
allowstransparency="True" opacitymask="White" windowstyle="None"
background="Transparent" width="620" height="267"
xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml
xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation
x:class="ShapedWPFForm.ShapedWindow">
<grid>
<img name="imgBackground" source="Shape.png" stretch="Fill" />
</grid>
</window>
Все. Особое внимание уделяем выделенным курсивом фрагментам. Если при компиляции будут возникать ошибки - меняем "allowstransparency" на "AllowsTransparency" или "img" на "Image" и так далее в том же духе )))
С помощью WPF и XAML окну можно придать любую форму. Любое изображение любой формы можно сделать окном программы. Изображение должно иметь формат png, его фон должен быть прозрачным.
Это легко сделать в Photoshop.
1. Взять любое изображение, выделить на нем фрагмент, который будет окном нашей программы.
2. Создать новое изображение, обязательно установить галочку "Прозрачность" (Transparency).
3. Перетащить на новое изображение выделенный фрагмент.
4. Сохранить в формате png
Далее в Visual Studio (2008+) создаем новый WPF проект. XAML-описание главного окна программы должно содержать примерно следующее:
<window title="ShapedWindow" windowstartuplocation="CenterScreen"
allowstransparency="True" opacitymask="White" windowstyle="None"
background="Transparent" width="620" height="267"
xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml
xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation
x:class="ShapedWPFForm.ShapedWindow">
<grid>
<img name="imgBackground" source="Shape.png" stretch="Fill" />
</grid>
</window>
Все. Особое внимание уделяем выделенным курсивом фрагментам. Если при компиляции будут возникать ошибки - меняем "allowstransparency" на "AllowsTransparency" или "img" на "Image" и так далее в том же духе )))
Процедура Кнопка1Нажатие(Элемент)
Shell = Новый COMОбъект("WScript.Shell");
Shell.SendKeys("{CAPSLOCK}"); //Нажать эту кнопку
Shell.Run("calc"); //Запустить калькулятор
Shell.AppActivate("Конфигуратор"); //Сделать активным окно, чье имя начинается с "Конфигуратор"
Shell.Run(BatFile, 0, -1); //Запустить батник "BatFile", без открытия DOS окна, c ожиданием окончания работы
КонецПроцедуры
Специальные клавиши = {} {CAPSLOCK}
Ctrl+A = ^(A)
Shift+А = +(А)
Alt+А = %(А)
-------------------------------------------------------------------------------------------------------------------
Процедура КомандаАПИ(парам1, парам2)
Shell = Новый COMОбъект("WScript.Shell");
Shell.Run(парам1, парам2);
КонецПроцедуры
КомандаАПИ("rundll32 shell32, SHHelpShortcuts_RunDLL PrintersFolder", true); //открыть диалог "Принтеры"
КомандаАПИ("rundll32 SHELL32, SHHelpShortcuts_RunDLL FontsFolder", true); //открыть диалог "Шрифт"
КомандаАПИ("rundll32 user32, SetCursorPos", true); //переместить курсор мыши в нижний правый угол
КомандаАПИ("rundll32 user32, mouse_event", true); //сгенерировать нажатие мыши
КомандаАПИ("rundll32 user32, LockWorkStation", true); //заблокировать компьютер
-------------------------------------------------------------------------------------------------------------------
Shell = Новый COMОбъект("Shell.Application"); //Свернуть все окна
Shell.MinimizeAll();
-------------------------------------------------------------------------------------------------------------------
КомандаСистемы("shutdown -r"); //перегрузить компьютер
КомандаСистемы("gpedit.msc"); //запуск групповых политик
-------------------------------------------------------------------------------------------------------------------
Cсылки о "WScript.Shell" (WHS, реестр, запуск программ, ярлыки, файловая система, чтение и редактирование файлов, сеть, сетевое окружение, Microsoft Office, Word, Excel)
http://www.forum.mista.ru/topic.php?id=5265&kb=1
http://itland.ru/forum/index.php?showtopic=6096
-------------------------------------------------------------------------------------------------------------------
Создание внешних компонент для 1C с помощью C#, VB.Net, Net Framework
http://kb.mista.ru/article.php?id=56
http://www.kb.mista.ru/article.php?id=62
http://www.rsdn.ru/article/dotnet/cs1c.xml
http://www.rsdn.ru/Forum/Message.aspx?mid=751285
Shell = Новый COMОбъект("WScript.Shell");
Shell.SendKeys("{CAPSLOCK}"); //Нажать эту кнопку
Shell.Run("calc"); //Запустить калькулятор
Shell.AppActivate("Конфигуратор"); //Сделать активным окно, чье имя начинается с "Конфигуратор"
Shell.Run(BatFile, 0, -1); //Запустить батник "BatFile", без открытия DOS окна, c ожиданием окончания работы
КонецПроцедуры
Специальные клавиши = {} {CAPSLOCK}
Ctrl+A = ^(A)
Shift+А = +(А)
Alt+А = %(А)
-------------------------------------------------------------------------------------------------------------------
Процедура КомандаАПИ(парам1, парам2)
Shell = Новый COMОбъект("WScript.Shell");
Shell.Run(парам1, парам2);
КонецПроцедуры
КомандаАПИ("rundll32 shell32, SHHelpShortcuts_RunDLL PrintersFolder", true); //открыть диалог "Принтеры"
КомандаАПИ("rundll32 SHELL32, SHHelpShortcuts_RunDLL FontsFolder", true); //открыть диалог "Шрифт"
КомандаАПИ("rundll32 user32, SetCursorPos", true); //переместить курсор мыши в нижний правый угол
КомандаАПИ("rundll32 user32, mouse_event", true); //сгенерировать нажатие мыши
КомандаАПИ("rundll32 user32, LockWorkStation", true); //заблокировать компьютер
-------------------------------------------------------------------------------------------------------------------
Shell = Новый COMОбъект("Shell.Application"); //Свернуть все окна
Shell.MinimizeAll();
-------------------------------------------------------------------------------------------------------------------
КомандаСистемы("shutdown -r"); //перегрузить компьютер
КомандаСистемы("gpedit.msc"); //запуск групповых политик
-------------------------------------------------------------------------------------------------------------------
Cсылки о "WScript.Shell" (WHS, реестр, запуск программ, ярлыки, файловая система, чтение и редактирование файлов, сеть, сетевое окружение, Microsoft Office, Word, Excel)
http://www.forum.mista.ru/topic.php?id=5265&kb=1
http://itland.ru/forum/index.php?showtopic=6096
-------------------------------------------------------------------------------------------------------------------
Создание внешних компонент для 1C с помощью C#, VB.Net, Net Framework
http://kb.mista.ru/article.php?id=56
http://www.kb.mista.ru/article.php?id=62
http://www.rsdn.ru/article/dotnet/cs1c.xml
http://www.rsdn.ru/Forum/Message.aspx?mid=751285