Как стать автором
Обновить

WPF Tipz #1

Время на прочтение3 мин
Количество просмотров1.4K
Давеча у меня сломались уголки, нет ну натурально — сломались,
нет слава богу не в жизни, а только в приложении.

Жило себе приложение полгода и хоть бы хны, а тут раз и уголки у него сломались.

P.S

Тема уголков в WPF можеть быть не в полной мере раскрыта,
собственно ваши варианты по реализациям очень приветствуются :)



Думал, пыхтел, воевал с радиусами и с углами и с толщиной и с прозрачностью,
ничего не выходило…

А тем временем, в Visual Studio все выглядело нормально:


В отличии от скомпилированного варианта:


Пошел я ругаться на обновление студии SP1, а попутно и вопрошать что же делать…
Подождал как водится ответа, но тут сообразил что может и видеокарта виновата,
недавно обновил на 9600GT, может братья китайцы пошаманили…
Написал, нуль ответа…

Прошел час, мозг пробуждаясь от активность к пассивности подталкивал меня к утилите настройке драйвера Nvidia, зашел я туда в опции 3D, так там все с упором на качество…

Должно же ведь наоборот не быть такого…

Изменил я настройки на «Настройки согласно 3D-приложению»…
Мои уголки загорелись синим, думаю неспроста это и перекомпилировал приложение и
радости не было предела, мои уголки пришли обратно ко мне :)



P.S
Надеюсь мой опыт поможет кому-либо.
Просьба не минусовать меня тем людям которым не нравятся уголки или
WPF или Microsoft или шум на берегу Канарских островов.

P.P.S

Код Уголков:

<Window x:Class="ZabrRssReader.Forms.Windows.ViewFeedItem"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    
    Width="310" Height="260" WindowStyle="None" Background="Transparent" 
    AllowsTransparency="True" WindowStartupLocation="CenterOwner">
  <Border BorderThickness="3,5,3,5" CornerRadius="20,20,20,20" Padding="10">
    
    <Border.BorderBrush>
      <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
        <GradientStop Color="#FFAAAAAA" Offset="0"></GradientStop>
        <GradientStop Color="#FFAAAAAA" Offset="1"></GradientStop>
      </LinearGradientBrush>
    </Border.BorderBrush>
    
    <Border.Background>
      <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
        <GradientStop Color="#615B5D" Offset="0"></GradientStop>
        <GradientStop Color="#615B5D" Offset="0.2"></GradientStop>
        <GradientStop Color="#615B5D" Offset="0.3"></GradientStop>
        <GradientStop Color="#615B5D" Offset="0.2"></GradientStop>
        <GradientStop Color="#000000" Offset="1"></GradientStop>
      </LinearGradientBrush>
    </Border.Background>
    
    <TextBlock TextAlignment="Center" VerticalAlignment="Center">
      Hello World!
    </TextBlock>
  </Border>
</Window>



===========================================================

Строка делает уголки и толщину границ:
<Border BorderThickness=«3,5,3,5» CornerRadius=«20,20,20,20» Padding=«10»>


Для того чтобы уголки можно было нормально «щупать» включаем прозрачность в окне:
WindowStyle=«None» Background=«Transparent» AllowsTransparency=«True»

А для того чтобы мы могли перемещать формочку за «части тела» добавляем метод
MouseDown=«Window_MouseDown» в строку описания окна, и в файл кода добавляем метод:

//Makes Window Moving
    private void Window_MouseDown(object sender, MouseButtonEventArgs e)
    {
      if (e.LeftButton == MouseButtonState.Pressed) DragMove();
    }


P.P.P.S

Интересна ли вам серия статей в виде типзов ну или чуть более академически-сухих по WPF?
Теги:
Хабы:
Всего голосов 20: ↑19 и ↓1+18
Комментарии7

Публикации