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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему не отображается элемент "линия"? 
:(
    Опции темы
Dims
Дата 28.6.2010, 04:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Почему нижеследующий код не рисует линию? Эллипс рисует (если раскомментировать), а линию -- нет?

Код

<UserControl x:Class="WpfApplication2.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <Line Name="line1" Stroke="Black" Height="100" Width="100" />
        <!-- <Ellipse Name="ellipse1" Stroke="Black" VerticalAlignment="Stretch" /> -->
    </Grid>
</UserControl>


PM MAIL   Вверх
Partizan
Дата 28.6.2010, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



 <Line Name="line1" Stroke="Black" StrokeThickness="1" Height="100" Width="100" />


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Dims
Дата 28.6.2010, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



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

Кстати, а почему Line отсутствует в палитре элементов?
PM MAIL   Вверх
Partizan
Дата 28.6.2010, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



Dims, Line - это примитив...основные свойства для Line - это X1, Y1, X2, Y2, Stroke, StrokeThickness

<Line Name="line1" Stroke="Black" StrokeThickness="1" X1="0" Y1="0" X2="100" Y2="100"/>  


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Dims
Дата 28.6.2010, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Допустим, я хочу нарисовать букву Ф. Я что, не могу одинаковым образом нарисовать кружочек и палочку, чтобы они оставались вместе при изменении размеров окна?
PM MAIL   Вверх
Partizan
Дата 28.6.2010, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



Dims, ничто не мешает.

Код

<Ellipse Stroke="Black" Width="10" Height="10"/>
<Line Stroke="Black" X1="0.5" Y1="0" X2="0.5" Y2="14" StrokeThickness="1" Width="1" Height="14"/>



--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Dims
Дата 28.6.2010, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Так оно ж не растягивается вместе с контейнером. Можно сделать, чтоб растягивалось, как было у меня у эллипса?
PM MAIL   Вверх
Dims
Дата 28.6.2010, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Короче, узнаю любимую корпорацию: наляпали какое-то API теперь будут 20 версий исправлять косяки, продавая их за новые деньги...
PM MAIL   Вверх
Dims
Дата 28.6.2010, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Вот вопиющий пример:

Код

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" xmlns:my="clr-namespace:WpfApplication2">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>

        <TextBlock Text="{Binding ElementName=ellipse1,Path=ActualHeight}" Grid.Column="0"/>
        <Ellipse Grid.Row="1" Grid.Column="0" Name="ellipse1" VerticalAlignment="Stretch" Margin="20,20,20,20" Stroke="Black"/>
        <TextBlock Text="{Binding ElementName=line1,Path=ActualHeight}" Grid.Column="1"/>
        <Line Grid.Row="1" Grid.Column="1" Name="line1" X1="0" Y1="0" X2="200" Y2="300" VerticalAlignment="Stretch" Margin="20,20,20,20" Stroke="Black"/>

    </Grid>
    
</Window>


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


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



Dims, со временем вы научитесь его готовить, вот и всё smile
Код

<Grid Name="container">
        <Ellipse Stroke="Black" Name="e" Margin="10"/>
        <Line Stroke="Black" X1="0.5" Y1="0" X2="2" 
              Y2="{Binding ElementName=container, Path=ActualHeight}" 
              StrokeThickness="4" 
              Width="{Binding RelativeSource={RelativeSource Self}, Path=StrokeThickness}" 
              Height="{Binding ElementName=container, Path=ActualHeight}"/>
    </Grid>



--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
exBlender
Дата 29.6.2010, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.10.2009

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



Цитата(Dims @ 28.6.2010,  07:08)
Допустим, я хочу нарисовать букву Ф. Я что, не могу одинаковым образом нарисовать кружочек и палочку, чтобы они оставались вместе при изменении размеров окна?

Если "одинаковым образом", то это примерно так:
Код

<Grid x:Name="container">
        <Ellipse Stroke="Black" Margin="10" />
        <Path Stroke="Black" Stretch="Fill" Data="M0,0 L0,100"/>
</Grid>


Цитата(Dims @ 28.6.2010)
у эллипса не указано StrokeThickness, а он отображается.

Ellipse, Rectangle & Path - это фигуры, по умолчанию имеющие толщину обводки 1px и занимающие всю доступную ширину и высоту. Line к этой группе не относится.
Вообще же, XAML отличается продуманностью, логичностью и богатством возможностей.

Это сообщение отредактировал(а) exBlender - 29.6.2010, 19:05
--------------------
HTML и CSS забыв как страшный сон, хвалу я заммэлу пою и фирме Майкрософт.
PM MAIL   Вверх
Dims
Дата 29.6.2010, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Partizan @  28.6.2010,  23:38 Найти цитируемый пост)
со временем вы научитесь его готовить, вот и всё

Ну это понятно. Вариант с биндингом уже подсказали, но он мне тоже не нравится.

Ваша версия плоха тем, что ссылается на имя контейнера. А вдруг оно другое будет? Некузяво. Способа сослаться на самого себя я на нашёл. Но даже если бы и нашёл, и попытался бы сослаться на ActualHeight и ActualWidth, то это не помогло бы, так как оказалось, что эти параметры не меняются (определяются содержимым).
PM MAIL   Вверх
Dims
Дата 29.6.2010, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(exBlender @  29.6.2010,  18:32 Найти цитируемый пост)
Если "одинаковым образом", то это примерно так:


О, это лучше. Но тоже не совсем понятно. Я нарисовал путь в отдельной клетке

Код

<Ellipse Grid.Row="1" Grid.Column="0" Name="ellipse1" Height="50" VerticalAlignment="Stretch" Margin="20,20,20,20" Stroke="Black"/>
<Path Name="line1" Grid.Row="1" Grid.Column="1" Stroke="Black" Stretch="Fill" Data="M0,0 L200,100" Margin="20,20,20,20" />


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

Ок, спасибо.

А как определить имеющееся пространство между марджинами? 


Цитата(exBlender @  29.6.2010,  18:32 Найти цитируемый пост)
Вообще же, XAML отличается продуманностью, логичностью и богатством возможностей.


Вы меня успокоили. А то у меня энтузиазм даже пропал от первого впечатления :(

И всё-таки я не понимаю. Для Line. Можно же было сделать, что если одна из точек не указана, то она определяется по Width и Height...

PM MAIL   Вверх
Partizan
Дата 29.6.2010, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



Цитата(Dims @ 29.6.2010,  21:28)
Цитата(Partizan @  28.6.2010,  23:38 Найти цитируемый пост)
со временем вы научитесь его готовить, вот и всё

Ну это понятно. Вариант с биндингом уже подсказали, но он мне тоже не нравится.

Ваша версия плоха тем, что ссылается на имя контейнера. А вдруг оно другое будет? Некузяво. Способа сослаться на самого себя я на нашёл. Но даже если бы и нашёл, и попытался бы сослаться на ActualHeight и ActualWidth, то это не помогло бы, так как оказалось, что эти параметры не меняются (определяются содержимым).

ничто не мешает ссылаться на родительский контейнер по типу....без указания имени...RelativeSource FindAncestor


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
exBlender
Дата 29.6.2010, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.10.2009

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



Я не очень понял насчет "пространства", но когда нужно делать что-то конкретное для работающих приложений, те 8 типов лейаут-контролов, что имеются в XAML, позволяют делать всё, что угодно. Если, конечно, не пытаться придумывать что-то особо извращенное. 

Вот, например, линии работают немного по-разному:

Код

<Window x:Name="Window"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="WpfApplication3.MainWindow"
    Width="350" Height="525">

    <Grid>
        <Ellipse Grid.Row="1" Grid.Column="0" Name="ellipse1" Height="50" VerticalAlignment="Stretch" Margin="20" Stroke="Black"/>
        <Path Name="lineSizes" Stroke="Black" Stretch="Fill" Data="M0,0 L1,1" Margin="20" Height="200" Width="200" />
        <Path Name="lineMargins" Stroke="Black" Stretch="Fill" Data="M1,0 L0,1" Margin="65,150"/>
    </Grid>
</Window>






Это сообщение отредактировал(а) exBlender - 29.6.2010, 23:22
--------------------
HTML и CSS забыв как страшный сон, хвалу я заммэлу пою и фирме Майкрософт.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




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


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

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