Re[5]: [wpf] Прозрачность окна
От: MxKazan Португалия  
Дата: 17.03.09 13:25
Оценка: 3 (1)
Здравствуйте, lumf, Вы писали:

L>про zindex я уже давно подумал.... то ли туплю, то ли черт знает..... не получается чета нифига.... у гридов не нашел пропертей top и left... поэтому не могу расположить один грид на другим.... верен ли этот подход в принципе?

А зачем тебе у Гридов Top и Left? Если нужны, то юзай Canvas. Grid — это панель, которая не только даёт делать столбцы/строки, но и позволяет складывать контролы в стопку по z-order. Поэтому я тебе про нее написал. Посмотри пример:
<Window x:Class="WpfApplication21.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Background="Transparent"
        AllowsTransparency="True"
        WindowStyle="None"
        Title="Window1"
        Height="300"
        Width="300">
    <Grid>
        <Rectangle Fill="Black" Opacity="0.7"/>
        <Grid ShowGridLines="True">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <Image Name="PersonFoto"></Image>
            <Button Grid.Column="0" Grid.Row="0" Opacity="1">Привет</Button>
            <Button Grid.Column="1" Grid.Row="1" Opacity="0.5">Привет</Button>
        </Grid>
    </Grid>        
</Window>

Пойдет?

L>я просто в других примерах вроде видел что форму они делают прозрачной, просто дочерним элементам делают вот так:

L><Border.Background>
L> <SolidColorBrush Color="{DynamicResource MainPanelBackColor}"/>
L></Border.Background>
L>но мне такой вариант кажется не очень.... мне что теперь каждому элементу стиль задавать.
А этот код точно также приведет к прозрачности бордюров, потому что они находятся в том же визуальном дереве.
Re: [wpf] Прозрачность окна
От: MxKazan Португалия  
Дата: 17.03.09 11:03
Оценка: 2 (1)
Здравствуйте, lumf, Вы писали:

L>хочется сделать прозрачное окно, на нем разместить некую область, которая не должна быть прозрачной. думал что получится сделать просто указав форме


L>получил следующий результат:

L>вообще вся форма со всеми элементами стала прозрачной...
L>не могу понять в чем дело
В MSDN сказано тоже самое:

Opacity is applied from parent elements on down the element tree to child elements, but the visible effects of the nested opacity settings aren't indicated in the property value of individual child elements. For instance, if a list has a 50% (0.5) opacity and one of its list items has its own opacity set to 20% (0.2), the net visible opacity for that list item will be rendered as if it were 10% (0.1), but the property value of the list item Opacity property would still be 0.2 when queried.


Решить эту проблему можно, сделав окно полностью прозрачным и играться уровнем прозрачности лежащих на нем элементов, расположенных в разных ветвях визуального дерева. Например:
<Window x:Class="WpfApplication21.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Background="Transparent"
        AllowsTransparency="True"
        WindowStyle="None"
        Title="Window1"
        Height="300"
        Width="300">
    <StackPanel>
        <Button Opacity="0.5">Opacity 0.5</Button>
        <Button Opacity="1">Opacity 1</Button>
    </StackPanel>        
</Window>


Можешь использовать Grid, если визуально контролы должны накаладываться, но иметь независимую прозрачность.
[wpf] Прозрачность окна
От: lumf  
Дата: 17.03.09 10:48
Оценка:
hi all

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

WindowStyle="None"     
AllowsTransparency="True" 
Opacity="0.5"


и все остальное само собой будет непрозрачным, но не вышло....

получил следующий результат:
вообще вся форма со всеми элементами стала прозрачной...

не могу понять в чем дело


заранее спасибо
Сиськи и процессоры
Re[2]: [wpf] Прозрачность окна
От: lumf  
Дата: 17.03.09 11:43
Оценка:
Здравствуйте, MxKazan, Вы писали:



MK>Можешь использовать Grid, если визуально контролы должны накаладываться, но иметь независимую прозрачность.


Спасибо большое...

А можно здесь капельку подробнее? А то я не осознал... делаю вот так... но тут у меня же опять дочерние элементы....

<Grid  ShowGridLines="True" Background="Black" Opacity="0.7"  >
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
            <Image Name="PersonFoto"></Image>
        <Button Grid.Column="0" Grid.Row="0" Opacity="1">Привет</Button>
        <Button Grid.Column="1" Grid.Row="1" Opacity="0.5">Привет</Button>
    </Grid>
Сиськи и процессоры
Re[3]: [wpf] Прозрачность окна
От: MxKazan Португалия  
Дата: 17.03.09 11:48
Оценка:
Здравствуйте, lumf, Вы писали:

L>А можно здесь капельку подробнее? А то я не осознал... делаю вот так... но тут у меня же опять дочерние элементы....

Не прописывай Гриду прозрачность и фон. Вместо этого положи на него, например, прямоугольник и измени ему прозрачность. Не забудь про ZIndex, ColumnSpan и RowSpan. А можно еще лучше сделать, сделав два отдельных грида. Первый грид содержит прямоугольник, задающий фон, и второй грид, на котором уже твои кастомные элементы.
Re[4]: [wpf] Прозрачность окна
От: lumf  
Дата: 17.03.09 12:17
Оценка:
Здравствуйте, MxKazan, Вы писали:

MK>Здравствуйте, lumf, Вы писали:


L>>А можно здесь капельку подробнее? А то я не осознал... делаю вот так... но тут у меня же опять дочерние элементы....

MK>Не прописывай Гриду прозрачность и фон. Вместо этого положи на него, например, прямоугольник и измени ему прозрачность. Не забудь про ZIndex, ColumnSpan и RowSpan. А можно еще лучше сделать, сделав два отдельных грида. Первый грид содержит прямоугольник, задающий фон, и второй грид, на котором уже твои кастомные элементы.


про zindex я уже давно подумал.... то ли туплю, то ли черт знает..... не получается чета нифига.... у гридов не нашел пропертей top и left... поэтому не могу расположить один грид на другим.... верен ли этот подход в принципе? я просто в других примерах вроде видел что форму они делают прозрачной, просто дочерним элементам делают вот так:

<Border.Background>
            <SolidColorBrush Color="{DynamicResource MainPanelBackColor}"/>
</Border.Background>


но мне такой вариант кажется не очень.... мне что теперь каждому элементу стиль задавать.
Сиськи и процессоры
Re[6]: [wpf] Прозрачность окна
От: lumf  
Дата: 17.03.09 13:50
Оценка:
Спасибо большое... кажется, то что надо!
Сиськи и процессоры
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.