Разработка электронных устройств

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

Прототипы и серийное производство

Разработка и изготовление корпусов и передних панелей. Разработка и изготовление печатных платы любой сложности. Монтаж печатных плат.

Написание программного обеспечения

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

Разработка механизмов различной степени сложности

Проектирование и прототипирование подвижных и неподвижных механизмов и узлов устройств и агрегатов. Полное сопровождение проекта и написание технической литературы

Создание, продвижение и обслуживание сайтов

Написание php/perl/c кода или использование cms. Собственный сервер для размещения Ваших проектов под любые нагрузки. Поддержание сайта в актуальности и продвижение в поисковых системах.

 
 

Эффект окна в стиле Windows Aero Glass

Автор: от 28 Январь 2013 года, просмотров 3179

Google

Пример окна с использованием windows aero

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

Такого эффекта прозрачности можно добиться стандартными средствами WinForm. Следует заметить что код будет работать только на Windows 7 и Vista, ввиду того что Microsoft уже не использует данную технологию в своей новой операционной системе, в Windows 8 работать не будет.

Для того что бы сделать окно прозрачным по краям необходимо подключить специальную библиотеку DwmApi.dll. Еще одной особенностью является, то что прозрачность будет соответствовать стилю Aero от Windows, т.е. все что будет находится за прозрачной частью, будет размыто. Так как WinForm это GDI+, то для отображения эффекта необходимо что бы части, которые будут прозрачными, имели черный цвет:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<DllImport("DwmApi.dll")> _ Public Shared Function DwmExtendFrameIntoClientArea( _ 
                               ByVal hwnd As IntPtr, _                                
							   ByRef MARGINS As MARGINS _                                
							   ) As Integer 
End Function 
 
Public Structure MARGINS    
	Dim cxLeftWidth As Integer    
	Dim cxRightWidth As Integer    
	Dim cyTopHeight As Integer    
	Dim cyBottomHeight As Integer 
End Structure 
 
Dim Marg As MARGINS Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load   
 ' проверяем версию ОСи и если это Vista или 7 то делаем окошко прозрачным    
	If My.Computer.Info.OSVersion.Substring(0, 1) = "6" Then
	 ' Задаём размеры прозрачности  
		Marg.cxLeftWidth = 215     ' размер отступа от левого края       
		Marg.cxRightWidth = 10     ' размер отступа от правого края       
		Marg.cyTopHeight = 10      ' размер отступа сверху       
		Marg.cyBottomHeight = 40   ' размер отступа снизу       
		Me.BackGroundColor = Black    
	 ' Применяем наши настройки
		DwmExtendFrameIntoClientArea(Me.Handle, Marg)    
	End If 
 End Sub

 

 Следует заметить еще одну вещь. Если в зону прозрачной части попадет кнопка или скажем Label с черным цветом шрифта, то надписи тоже будут прозрачными. Что бы избежать этого можно свойству UseCompatibleTextRendering каждого элемента присвоить значение true. В итоге должно получится примерно так:

 

1
Me.Button1.UseCompatibleTextRendering = true

 

 Удачного кодинга и поменьше багов!

Категория: