Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 2 цвета в контроле, без градиента, простой вопрос, но задолбался искать 
:(
    Опции темы
gambit
Дата 28.8.2010, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: нет
Всего: 40



сем привет. В принципе элементарный вопрос, но почему то везде освещена в виде градиента. Как в xaml сделать 2 цвета в контроле, без градиента. Т.е. Кнопка, снизу до середины один цвет, от середины и до верха другой. Спасибо.
PM MAIL ICQ Skype   Вверх
Sartorius
Дата 28.8.2010, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 1
Всего: 37



Делай шаблон кнопки из двух Rectangle или Таблицей из двух строк с нужной SolidBrush для Background-a. В общем наполнение шаблона от фантазии зависит только. Вариантов можно много придумать.


PM MAIL ICQ   Вверх
gambit
Дата 28.8.2010, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: нет
Всего: 40



Sartorius, в xaml новичек. Что не так:
Код

<Style TargetType="Button" x:Key="ButtonNumber">
            <Setter Property="Background">
                <Setter.Value>
                    <Table>
                        <TableRowGroup Background="#FFAD4545"/>
                        <TableRowGroup Background="#FF838383"/>
                    </Table>
                </Setter.Value>
            </Setter>
        </Style>

PM MAIL ICQ Skype   Вверх
Sartorius
Дата 28.8.2010, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 1
Всего: 37



 Нее. Это стиль. Они тоже полезны для кастомизации вида контролов, но для твоего случая не подходят. Про шаблоны можно почитать здесь http://weblogs.asp.net/scottgu/pages/silve...k-and-feel.aspx

 Вообще, если тебе нужна только одна кнопка. Можно так сделать

Код

<Button>
 <Button.Content>
  <Grid>
    <Grid.RowDefinitions>
       <RowDefinition Height="*"/>
       <RowDefinition Height="*"/>
     </Grid.RowDefinitions>
     <Grid Row=0 background="#FFFF000000"/>
     <Grid Row=1 background="#FFFF000000"/>  
   </Grid>
 </Button.Content>
</Button>


Если шаблон создавать 


Код

<ControlTemplate x:Key="MyTemplate" TargetType="Button">
 <Grid>
  <Grid>
    <Grid.RowDefinitions>
       <RowDefinition Height="*"/>
       <RowDefinition Height="*"/>
     </Grid.RowDefinitions>
     <Grid Row=0 background="#FFFF000000"/>
     <Grid Row=1 background="#FF00FF0000"/>  
   </Grid>
   <ContentPresenter Content="{TemplateBinding Content}"/>
 </Grid>
</ControlTemplate>
...

<Button Template="{StaticResource  MyTemplate}"/>


Что-то типа того.
Могу с синтаксисом ошибаться немного. Давно не верстал, а IDE под рукой нет...

С другой стороны ты можешь просто обрабатывать MouseLeftKeyDown на StackPanel из двух Rectangle например
Код

<StackPanel MouseLeftButtomDown="MyHandler">
 <Rectangle Fill="FFFF0000" Width = 100 Height = 30/>
 <Rectangle Fill="FF00FF00" Width = 100 Height = 30/>
</StackPane>


Но лучше так не делать, т.к. лишаешься многих фич Button-а. Таких например, как Visual - состояния... 

В общем смотри в сторону ControlTemplate-ов для подобных задач
PM MAIL ICQ   Вверх
Kefir
Дата 28.8.2010, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 22
Всего: 87



Я может чего недопонял (аллергию на градиенты к примеру), но это вполне выполняется посредством градиент стопов (только не двух, а четырёх):
Код

        <Button Content="Hi">
            <Button.Background>
                <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                    <GradientStopCollection>
                        <GradientStop Color="RosyBrown" Offset="0"/>
                        <GradientStop Color="RosyBrown" Offset="0.5"/>
                        <GradientStop Color="Green" Offset="0.5"/>
                        <GradientStop Color="Green" Offset="1"/>
                    </GradientStopCollection>
                </LinearGradientBrush>
            </Button.Background>
        </Button>

Тут почти по русски написано - от 0 до 0.5 - один цвет, а от 0.5 до 1 - другой. Хоть пять цветов туда загоняйте smile
PM MAIL WWW Skype   Вверх
gambit
Дата 29.8.2010, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: нет
Всего: 40



Kefir, да нашел такой способ, шел отписаться что нашел пусть кривой способ но рабочий, а тут оказалось, что он не кривой, а нормальный. Спасибо))
PM MAIL ICQ Skype   Вверх
Kefir
Дата 29.8.2010, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 22
Всего: 87



gambit, он не кривой - это способ стандартней некуда. Так что пользуйся на здоровье. Все градиенты а-ля "стекло" таким образом делаются smile
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.1423 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.